Introduzione
Secure Shell (SSH) è un protocollo di rete crittografica utilizzato per una connessione sicura tra un client e un server e supporta vari meccanismi di autenticazione. La connessione crittografata può essere utilizzata per eseguire comandi sul server, tunneling X11, port forwarding e altro.
Password e chiave pubblica sono i due meccanismi più comuni per le autenticazioni.
L'autenticazione tramite chiave pubblica si basa sull'uso delle firme digitali ed è più sicura e conveniente dell'autenticazione con password tradizionale.
Questo articolo descrive come generare chiavi SSH su sistemi Debian 10. Ti mostreremo anche come impostare un'autenticazione basata su chiave SSH e collegarti a server Linux remoti senza inserire una password.
Creare chiavi SSH su Debian
È probabile che tu abbia già una coppia di chiavi SSH sul tuo computer client Debian. Se stai generando una nuova coppia di chiavi, quella vecchia verrà sovrascritta.
Eseguire il comando ls
seguente per verificare l'esistenza dei file chiave:
ls -l ~/.ssh/id_*.pub
Se l'output del comando sopra contiene qualcosa di simile No such file or directory
o no matches found
, significa che non hai chiavi SSH e puoi continuare con il passaggio successivo e generare una nuova coppia di chiavi SSH.
Altrimenti, se si dispone di una coppia di chiavi SSH, è possibile utilizzare quelle o eseguire il backup delle vecchie chiavi e generarne di nuove.
Genera una nuova coppia di chiavi SSH a 4096 bit con il tuo indirizzo email come commento immettendo il seguente comando:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
L'output sarà simile al seguente:
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
Premere Enter
per accettare il percorso e il nome file predefiniti.
Successivamente, ti verrà richiesto di digitare una passphrase sicura. Se vuoi usare una passphrase, dipende da te. La passphrase aggiunge un ulteriore livello di sicurezza.
Enter passphrase (empty for no passphrase):
Se non si desidera utilizzare una passphrase, premere semplicemente Enter
.
Per confermare che è stata generata la coppia di chiavi SSH, eseguire il comando seguente:
ls ~/.ssh/id_*
Il comando mostrerà i file chiave:
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
Copiare la chiave pubblica sul server
Ora che hai la tua coppia di chiavi SSH, il passo successivo è copiare la chiave pubblica sul server che vuoi gestire.
Il modo più semplice e consigliato per copiare la chiave pubblica sul server remoto è utilizzare lo strumento ssh-copy-id
.
Esegui il comando seguente sul tuo computer locale:
ssh-copy-id nome_utente_remoto@indirizzo_ip_server
Ti verrà richiesto di inserire la password dell'utente nome_utente_remoto
:
nome_utente_remoto@indirizzo_ip_server's password:
Una volta autenticato l'utente, il contenuto del file della chiave pubblica (~/.ssh/id_rsa.pub
) verrà aggiunto al file ~/.ssh/authorized_keys
dell'utente remoto e la connessione verrà chiusa.
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'nome_utente_remoto@indirizzo_ip_server'"
and check to make sure that only the key(s) you wanted were added.
Se l'utilità ssh-copy-id
non è disponibile sul computer locale, utilizzare il comando seguente per copiare la chiave pubblica:
cat ~/.ssh/id_rsa.pub | ssh nome_utente_remoto@indirizzo_ip_server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Accedere al server usando le chiavi SSH
A questo punto, dovresti essere in grado di accedere al server remoto senza che ti venga richiesta una password.
Per testarlo, prova a connetterti al server tramite SSH:
ssh nome_utente_remoto@indirizzo_ip_server
Se non hai impostato una passphrase, accedi immediatamente. Altrimenti, ti verrà richiesto di inserire la passphrase.
Disabilitare l'autenticazione password SSH
Per aggiungere un ulteriore livello di sicurezza al server, è possibile disabilitare l'autenticazione della password SSH.
Prima di disabilitare l'autenticazione con password, assicurarsi di poter accedere al server senza password e che l'utente con cui si accede dispone dei privilegi sudo.
Accedi al tuo server remoto:
ssh nome_utente_sudo@indirizzo_ip_server
Apri il file di configurazione del server SSH /etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
Cerca le seguenti direttive e modificale in questo modo:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Una volta fatto, salva il file e riavvia il servizio SSH:
sudo systemctl restart ssh
A questo punto, l'autenticazione basata su password è disabilitata.
Conclusione
Ti abbiamo mostrato come generare una nuova coppia di chiavi SSH e impostare un'autenticazione basata su chiave SSH. È possibile utilizzare la stessa chiave per gestire più server remoti. Hai anche imparato a disabilitare l'autenticazione con password SSH e ad aggiungere un ulteriore livello di sicurezza al tuo server.
Per impostazione predefinita, SSH è in ascolto sulla porta 22. La modifica della porta SSH predefinita riduce il rischio di attacchi automatici. Per semplificare il flusso di lavoro, utilizzare il file di configurazione SSH per definire tutte le connessioni SSH.