L'uso delle chiavi con SSH permette di eseguire un login senza dover digitare la password con questi due vantaggi:
1- Sicurezza: si fa a meno di usare le password che possono essere indovinate o rubate.
2- Si possono effetture collegamenti in "batch" e quindi scrivere script che prevedono un collegamento ssh.
1. Generazione sul client delle chiavi pubblica e privata:
[utente_cli@client]$ ssh-keygen -t rsa
(è possibile evitare di digitare la passphrase)
2. Invio della chiave pubblica al server
[utente_cli@client]$ scp ~/.ssh/id_rsa.pub utente_ser@server:
3. Sul server inserire il contenuto di id_rsa.pub appena trasferito in /home/utente_ser/.ssh/authorized_keys2
:
[utente_ser@server]$ cat id_rsa.pub >> .ssh/authorized_keys2
(Questo comando va eseguito sul server)
Da ora in poi se ci si connette al server partendo dalla shell dell'utente che ha trasmesso la chiave non verrà chiesta la password e funziona l'opzione "-o BatchMode=yes" (necessaria se usiamo il comando in uno script)
NOTA: Se la password viene ancore richiesta, provare a controllare sul server in /etc/ssh/sshd_config l'opzione "StrictModes": inserire
StrictModes no
e far ripartire il servizio sshd.
L'opzione a "yes" (default su molte distro) dice al server sshd di non accettare la connessione con la chiave pubblica se la home dell'utente e il file authorized_key hanno permessi diversi da 700 (per la dir) e 640 (per il file). Spesso però sui server le home degli utenti di un certo gruppo sono leggibili dagli utenti appartenenti al gruppo.
chiiiiii?
RispondiSulla sicurezza
Premesso che mi sono permesso di ritoccare la frase iniziale e qualche accento (sostituendo lettere accentate agli apostrofi) ho una piccola riserva sulla sicurezza.
Non dover digirare la password può avere vantaggi pratici, ma se uno ti buca la macchina che usi come client ssh, può poi accedere direttamente al server ssh senza problemi.
Inoltre di default l'uso di una chiave non esclude la normale login via password. Per farlo si dovrebbe avere nel sshd_config qualcosa come (se non sbaglio):
RSAAuthentication yes
PasswordAuthentication no