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 remote_username@remote_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 root@IP_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 nome_utente@IP_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 nome_utente@IP_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 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'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 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.
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 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 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.