Introduzione
Secure Shell (SSH) è un protocollo di rete crittografica utilizzato per la connessione sicura tra un client e un server e supporta vari meccanismi di autenticazione. I due meccanismi più popolari sono l'autenticazione basata su password e l'autenticazione basata su chiave pubblica.
In questo tutorial, vedremo come impostare un'autenticazione basata su chiave SSH e come collegarti al tuo server Linux senza inserire una password.
Configurazione dell'accesso SSH senza password
Per impostare un login SSH senza password in Linux, tutto ciò che devi fare è generare una chiave di autenticazione pubblica e aggiungerla al file ~/.ssh/authorized_keys
degli host remoti.
I seguenti passaggi descriveranno il processo di configurazione dell'accesso SSH senza password.
Prima di generare una nuova coppia di chiavi SSH, verificare se sul computer client è già presente una chiave SSH per non sovrascrivere le chiavi esistenti.
Esegui il seguente comando ls per vedere se sono presenti chiavi SSH esistenti:
ls -al ~/.ssh/id_*.pub
Se sono presenti chiavi esistenti, è possibile utilizzare quelle e saltare il passaggio successivo o eseguire il backup delle vecchie chiavi e generarne una nuova.
Se ricevi uno dei seguenti messaggi di output significa che non hai una chiave SSH e puoi procedere con il passaggio successivo e generarne una nuova.
No such file or directory
no matches found
Il seguente comando genererà una nuova coppia di chiavi SSH a 4096 bit con il tuo indirizzo e-mail come commento:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Premere Enter
per accettare il percorso e il nome file predefiniti:
Enter file in which to save the key (/home/tuo_username/.ssh/id_rsa):
Successivamente, lo strumento ssh-keygen
ti chiederà di digitare una passphrase sicura. Se vuoi usare la passphrase dipende da te, se scegli di usare la passphrase otterrai un ulteriore livello di sicurezza. Nella maggior parte dei casi, gli sviluppatori e gli amministratori di sistema utilizzano SSH senza passphrase perché sono utili per processi completamente automatizzati. Se non si desidera utilizzare la passphrase, premereEnter
.
Enter passphrase (empty for no passphrase):
Per essere sicuri che vengano generate le chiavi SSH, puoi elencare le tue nuove chiavi private e pubbliche con il seguente comando:
ls ~/.ssh/id_*
Dovresti ricevere un messaggio di output simile al seguente
/home/yourusername/.ssh/id_rsa /home/tuo_username/.ssh/id_rsa.pub
Ora che hai generato una coppia di chiavi SSH, per poter accedere al tuo server senza password devi copiare la chiave pubblica sul server che desideri gestire.
Il modo più semplice per copiare la chiave pubblica sul server è utilizzare un comando chiamato ssh-copy-id
. Sul terminale del computer locale digitare:
ssh-copy-id remote_username@server_ip_address
Ti verrà richiesto di inserire la password remote_username
:
remote_username@server_ip_address's password:
Una volta autenticato l'utente, la chiave pubblica verrà aggiunta al file authorized_keys
dell'utente remoto e la connessione verrà chiusa.
Se per qualche motivo l'utilityssh-copy-id
non è disponibile sul computer locale è possibile utilizzare il comando seguente per copiare la chiave pubblica:
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Dopo aver completato i passaggi precedenti, dovresti essere in grado di accedere al server remoto senza che ti venga richiesta una password.
Per provarlo basta provare ad accedere al tuo server tramite SSH:
ssh remote_username@server_ip_address
Se tutto è andato bene, verrai eseguito l'accesso immediatamente.
Disabilitazione dell'autenticazione password SSH
Per aggiungere un ulteriore livello di sicurezza al server è possibile disabilitare l'autenticazione della password per SSH.
Prima di disabilitare l'autenticazione della password SSH, assicurarsi di poter accedere al server senza password e l'utente con cui si accede dispone dei privilegi sudo.
Accedi al tuo server remoto con le chiavi SSH, sia come utente con privilegi sudo o root:
ssh sudo_user@server_ip_address
Apri il file di configurazione SSH /etc/ssh/sshd_config
, cerca le seguenti direttive e modifica come segue:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Al termine, salvare il file e riavviare il servizio SSH.
Sui server Ubuntu o Debian, eseguire il comando seguente:
sudo systemctl restart ssh
Sui server CentOS o Fedora, eseguire il comando seguente:
sudo systemctl restart sshd
Conclusione
In questo tutorial hai imparato come configurare un'autenticazione basata su chiave SSH, che ti consente di accedere al tuo server remoto senza fornire una password utente. Puoi aggiungere la stessa chiave a più servizi remoti.
Abbiamo anche visto come disabilitare l'autenticazione con password SSH e aggiungere un ulteriore livello di sicurezza al tuo server.