Utilizzare il comando ssh-keygen per generare una coppia di chiavi di autenticazione pubblica/privata. Le chiavi di autenticazione consentono a un utente di connettersi a un sistema remoto senza fornire una password. Le chiavi devono essere generate separatamente per ciascun utente. Se generi coppie di chiavi come utente root, solo il root può usare le chiavi.
L'esempio seguente crea le parti pubbliche e private di una chiave RSA:
# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:z6zTVQ/PJYt2o96DrVYClmfcqBG8Pdb8nzqY2m2HjeY root@geeklab The key's randomart image is: +---[RSA 2048]----+ | . | | o | | * = | | * O B .| | S. B + O.| | +. = = =| | .+ooB+.o| | ..oo=Bo+.| | .o.+*E=. | +----[SHA256]-----+
Utilizzare l'opzione –t per specificare il tipo di chiave da creare. I valori possibili sono "rsa1 ” per il protocollo versione 1 e “dsa “, “ecdsa “, o “rsa ” per il protocollo versione 2.
Hai la possibilità di specificare una passphrase per crittografare la parte privata della chiave. Se si crittografa la chiave personale, è necessario fornire la passphrase ogni volta che si utilizza la chiave. Ciò impedisce a un utente malintenzionato, che ha accesso alla tua chiave privata e può impersonarti e accedere a tutti i computer a cui hai accesso, di poterlo fare. L'attaccante deve comunque fornire la passphrase.
Il comando ssh-key nell'esempio ha generato due chiavi nella directory ~/.ssh:
$ ls ~/.ssh id_rsa id_rsa.pub
Per accedere o copiare file su un sistema remoto senza fornire una password, copiare la chiave pubblica (~/.ssh/id_rsa.pub in questo esempio) in ~/.ssh/authorized_keys sul sistema remoto. Imposta il telecomando ~/.ssh autorizzazioni di directory a 700 . È quindi possibile utilizzare gli strumenti ssh o scp per accedere al sistema remoto senza fornire una password.
Per consentire connessioni multiple, aggiungi la chiave pubblica al file authorized_keys sul sistema remoto invece di copiarlo. L'esempio seguente aggiunge la chiave pubblica:
$ cat id_rsa.pub >> authorized_keys
È possibile migliorare ulteriormente la sicurezza del sistema disabilitando l'autenticazione tramite password standard e applicando l'autenticazione basata su chiave. Per farlo, imposta l'opzione PasswordAuthentication su no in /etc/ssh/sshd_config file di configurazione come segue:
# vi /etc/ssh/sshd_config PasswordAuthentication no
Ciò non consente agli utenti le cui chiavi non sono nelle chiavi_autorizzate file dell'utente specifico sul server a cui connettersi tramite ssh. La connessione viene negata e viene visualizzato il seguente messaggio:
$ ssh host01 Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
L'impostazione dell'opzione PasswordAuthentication su yes, che è l'impostazione predefinita, consente a un utente di utilizzare una password per l'autenticazione.