Introduzione

SSH è uno strumento essenziale da padroneggiare come amministratore di sistema.

SSH, o Secure Shell, è un protocollo utilizzato per accedere in modo sicuro a sistemi remoti. È il modo più comune per accedere a server remoti simili a Linux e Unix.

In questa guida, discuteremo come utilizzare SSH per connettersi a un sistema remoto.

Sintassi di base

Lo strumento su Linux per la connessione a un sistema remoto tramite SSH è chiamato ssh.

La forma più semplice del comando è:

ssh remote_host

L'host remoto (remote_host) in questo esempio è l'indirizzo IP o il nome di dominio a cui si sta tentando di connettersi.

Questo comando presuppone che il tuo nome utente sul sistema remoto sia uguale al tuo nome utente sul tuo sistema locale.

Se il tuo nome utente è diverso sul sistema remoto, puoi specificarlo utilizzando questa sintassi:

ssh [email protected]_host

Dopo esserti connesso al server, ti verrà probabilmente chiesto di verificare la tua identità fornendo una password.

Per uscire dalla sessione locale, digita semplicemente:

exit

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Configurare l'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

Oppure:

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, che hai appena generato, 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'utility ssh-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.

Disabilitare l'autenticazione con 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 connetterti ad un server remoto con il terminale e 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.