Come generare una chiave SSH pubblica/privata in Linux

Se utilizzi frequentemente SSH per connetterti a un host remoto, un modo per proteggere il tuo server SSH è utilizzare una chiave SSH pubblica/privata in modo che nessuna password venga trasmessa sulla rete. Questo può prevenire anche attacchi di forza bruta.
In Linux, creare una chiave SSH pubblica/privata è facile.
- Apri un terminale. Digita:
ssh-keygen -t rsaIn alternativa, puoi anche utilizzare la tecnologia DSA (Digital Signing Algorithm) per creare la chiave pubblica/privata.
ssh-keygen -t dsaNota: c’è stata molta discussione sulla sicurezza di DSA e RSA. A mio avviso, a meno che tu non sia molto specifico e ami immergerti nei dettagli tecnici tra le due tecnologie, non importa quale delle due scegli. Entrambe funzioneranno bene.
- Nella schermata successiva, dovresti vedere un prompt che chiede la posizione in cui salvare la chiave. La posizione predefinita è la cartella .ssh nella tua directory Home. Premi Invio per accettare l’impostazione predefinita.

- Ti verrà chiesto di inserire una passphrase – NON la passphrase per connetterti al tuo host remoto, ma la passphrase per sbloccare la chiave privata in modo che nessuno possa accedere al tuo server remoto anche se riesce a ottenere la tua chiave privata. La passphrase è facoltativa. Per lasciarla vuota, premi semplicemente Invio.

- La tua chiave SSH pubblica e privata dovrebbe ora essere generata. Apri il gestore di file e naviga nella directory .ssh. Dovresti vedere due file: id_rsa e id_rsa.pub.

- Carica la tua nuova chiave pubblica SSH sul tuo host remoto eseguendo il seguente comando:
ssh-copy-id username@remote-host-ip-address
- Accedi al tuo host remoto ed edita il tuo file di configurazione SSH:
ssh username@remote-host-ip-address
sudo nano /etc/ssh/sshd_configScorri verso il basso nel file di configurazione e assicurati che i seguenti attributi siano impostati correttamente:
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication noPremi Ctrl + O per scrivere e salvare il file, quindi Ctrl + X per chiudere il file.

- Riavvia il server SSH sull’host remoto:
sudo systemctl restart sshQuesto è tutto. Ora puoi connetterti al tuo host remoto con il seguente comando:
ssh username@remote-host-ip-address
Domande frequenti
Ho copiato la mia chiave SSH sul mio server remoto e ricevo un errore “Permesso negato”.
Questo problema è molto probabilmente dovuto a un problema con la cartella “.ssh” del tuo host remoto. Per impostazione predefinita, il demone SSH rifiuta qualsiasi connessione in entrata se la sua cartella di configurazione e il file “authorized_keys” non hanno i bit di permissione corretti.
Per modificare i permessi dei file e delle cartelle, accedi a una console locale per la tua macchina remota, quindi vai nella tua directory “/home” ed esegui: chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/authorized_keys. Infine, riavvia il demone per applicare le nuove impostazioni: sudo systemctl restart ssh.
È possibile creare più chiavi SSH per lo stesso server remoto?
Sì! Tuttavia, devi assicurarti che ogni chiave SSH nella tua macchina abbia un nome file unico eseguendo: ssh-keygen -f /home/$USER/.ssh/nomefile.
A parte questo, assicurati di specificare la chiave che desideri utilizzare per accedere al tuo host remoto eseguendo: ssh -i /home/$USER/.ssh/nomefile [email protected].
È possibile importare una nuova chiave SSH su un host remoto con una vecchia chiave funzionante?
Sì! Prima, importa la tua nuova chiave nell’agente di autenticazione SSH: ssh-add. Successivamente, accedi alla tua vecchia macchina e importa la sua chiave nello stesso agente di autenticazione: ssh -A old.machine.ip.address && ssh-add -c.
Infine, lascia la vecchia macchina premendo Ctrl + D e connettiti al tuo host remoto con entrambe le tue chiavi, nuova e vecchia.