SSH è un protocollo per trasferire i dati in modo sicuro tra macchine diverse. Il protocollo SSH utilizza la crittografia a chiave pubblica per consentire al client di autenticare il server e, se necessario, per consentire al server di autenticare il client senza inviare password avanti e indietro.
La crittografia a chiave pubblica utilizza una coppia di chiavi pubblica-privata. La chiave privata è tenuta segreta e non viene mai trasferita sulla rete. La chiave pubblica può essere distribuita a tutti i peer. I messaggi crittografati utilizzando la chiave pubblica possono essere decifrati solo con la chiave privata.
Al momento della connessione SSH, il client riceve la chiave pubblica del server e verifica se questa corrisponde alla chiave pubblica memorizzata in $HOME/.ssh/known_hosts . Se questo test ha esito positivo e il server non dispone della chiave pubblica del client, è richiesta una password. Altrimenti, il server invia un messaggio crittografato con la chiave pubblica del client e se il client riesce a decifrare il messaggio con successo, utilizzando la sua chiave privata, viene stabilita la connessione.
Esistono due versioni del protocollo SSH, la versione 1 e 2. Le crittografie sono legate alla versione del protocollo. La versione 1 soffre di vulnerabilità di sicurezza, quando possibile, dovrebbe essere utilizzata la versione 2. La maggior parte dei server SSH utilizza la versione 2 del protocollo a causa delle limitazioni della versione 1.
Esistono 2 algoritmi per la crittografia di coppie di chiavi pubbliche-private, RSA e DSA .
Configurazione client
Protocollo | Tipo | Riga di comando |
---|---|---|
Versione 1 | RSA1 | -t rsa1 |
Versione 2 | RSA | -t rsa |
Versione 2 | DSA | -t dsa |
Dopo aver determinato quale tipo di identità si desidera/bisogna, il primo passo è generare una coppia di chiavi pubbliche-private e copiare la parte pubblica nella posizione appropriata sul lato server. Nella home directory dell'utente, sul computer client, esegui (dovresti avere la directory $HOME/.ssh, altrimenti creala):
# ssh-keygen -t dsa -f ~/.ssh/id_dsa Generating public/private dsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_dsa. Your public key has been saved in /root/.ssh/id_dsa.pub. The key fingerprint is: SHA256:Qmd9iBOzx02n4DvDiBwRoGbGGC12X9i41QtbBxznHZc root@geeklab The key's randomart image is: +---[DSA 1024]----+ |.. ..*.=o+......| |.=.o o * %o*.ooE | |o.B . * X O.+. | | + = * * o | | + S = | | . o | | | | | | | +----[SHA256]-----+
Ecco,
-t – viene utilizzato per il tipo di crittografia.
-f – dove archiviare le coppie di chiavi pubblica/privata. In questo caso, la directory .ssh nella home dell'utente.
Una passphrase verrà richiesta dopo aver eseguito il comando precedente. Lascia vuota questa parte, premendo semplicemente [invio] se non vuoi digitare questa passphrase ad ogni connessione. In alternativa, è possibile configurare un agente ssh per gestire le passphrase.
Il comando precedente crea due file in ~/.ssh:
# ls -lrt ~/.ssh/id_dsa* -rw-r--r--. 1 root root 602 Apr 12 14:45 /root/.ssh/id_dsa.pub -rw-------. 1 root root 668 Apr 12 14:45 /root/.ssh/id_dsa
Configurazione del server
Il file id_dsa.pub contiene la chiave pubblica del client, che deve essere aggiunta al file $HOME/.ssh/authorized_keys sul server:
1. Copia il file id_dsa.pub sul server:
client$ scp ~/.ssh/id_dsa.pub user@server:~/.ssh/id_dsa.pub
Naturalmente, questa volta dovrai inserire la password per l'utente.
2. Ora, accedi alla macchina server e vai alla directory .ssh sul lato server
client$ ssh user@server server$ cd .ssh
3. Ora aggiungi la chiave pubblica del client all'elenco delle chiavi pubbliche conosciute sul server:
server$ cat id_dsa.pub >> authorized_keys server$ chmod 640 authorized_keys server$ rm id_dsa.pub server$ exit
questo è tutto.
Test
Per verificare se ssh senza password funziona, usa la sintassi seguente:
$ ssh -l [user] [server] Last login: Tue Apr 12 15:20:07 2007 from 192.168.0.100
o in alternativa
$ ssh [user]@[server] Last login: Tue Oct 12 15:20:07 2007 from 192.168.0.100
Se il sistema non ti ha richiesto una password, tutto funziona correttamente.
Avviso
Assicurati di mantenere segreta la tua chiave privata (~/.ssh/id_dsa)! Sebbene sia sicuro fornire la tua chiave pubblica (~/.ssh/id_dsa.pub) al mondo, dovresti stare estremamente attento che nessun altro possa leggere la tua chiave privata (~/.ssh/id_dsa). Tutti coloro che hanno accesso alla chiave privata possono accedere a qualsiasi macchina su cui è installata la chiave pubblica corrispondente.