Come generare una chiave SSH pubblica/privata in Linux

Genera chiave SSH Linux 00 Immagine in evidenza

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.

  1. Apri un terminale. Digita:
ssh-keygen -t rsa

In alternativa, puoi anche utilizzare la tecnologia DSA (Digital Signing Algorithm) per creare la chiave pubblica/privata.

ssh-keygen -t dsa

Nota: 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.

  1. 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.

Genera chiave SSH Linux 01 Crea nuova chiave

  1. 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.

Genera chiave SSH Linux 02 Aggiungi nuova passphrase

  1. 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.

Genera chiave SSH Linux 03 Elenca i file della cartella SSH

  1. Carica la tua nuova chiave pubblica SSH sul tuo host remoto eseguendo il seguente comando:
ssh-copy-id username@remote-host-ip-address

Genera chiave SSH Linux 04 Copia chiave sull'host remoto

  1. Accedi al tuo host remoto ed edita il tuo file di configurazione SSH:
ssh username@remote-host-ip-address  
sudo nano /etc/ssh/sshd_config

Scorri verso il basso nel file di configurazione e assicurati che i seguenti attributi siano impostati correttamente:

RSAAuthentication yes  
PubkeyAuthentication yes  
PasswordAuthentication no

Premi Ctrl + O per scrivere e salvare il file, quindi Ctrl + X per chiudere il file.

Genera chiave SSH Linux 05 Modifica il demone SSH dell'host remoto

  1. Riavvia il server SSH sull’host remoto:
sudo systemctl restart ssh

Questo è tutto. Ora puoi connetterti al tuo host remoto con il seguente comando:

ssh username@remote-host-ip-address

Genera chiave SSH Linux 06 Accesso SSH senza problemi all'host remoto

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.