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 Enterper 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 [email protected]_ip_address

Ti verrà richiesto di inserire la password remote_username:

[email protected]_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 [email protected]_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 [email protected]_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 [email protected]_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.