Translation(s): English - ?Français - Italiano

DaFare(vedi originale inglese): unire (e tradurre) questa pagina e quella in francese che è più completa.

Introduzione

SSH sta per Secure Shell ed è un protocollo per login remoto sicuro e altri servizi di rete sicuri su reti non sicure1. Vedere Secure Shell su Wikipedia per maggiori informazioni generiche e ssh, lsh-client o dropbear per implementazioni software, di cui OpenSSH è il più popolare e utilizzato2. SSH rimpiazza i protocolli non cifrati telnet, rlogin e rsh e apporta molte funzionalità.

In questo documento verrà usata la suite OpenSSH, si presume che siano definite le seguenti due variabili:

remote_host=<il computer remoto>
remote_user=<il nome utente su $remote_host>

Perciò, se si desiderano usare le indicazioni fornite più avanti, come prima cosa impostare queste variabili con il nome del computer remoto e il nome utente su quel computer remoto. Poi i comandi indicati in seguito potranno essere copiati e incollati con successo. remote_host può anche essere un indirizzo IP.

Installazione

Installazione del client

Normalmente il client viene installato in modo predefinito. Se ciò non accadesse, eseguire come root:

apt-get install openssh-client

Installazione del server

Il server permette di connettersi da remoto e si installa eseguendo da root:

apt-get install openssh-server

File di configurazione

I principali file di configurazione sono nella directory /etc/ssh :

In aggiunta questa directory contiene le coppie di chiavi private/pubbliche che identificano l'host:

Login remoto

Con password

Se si desidera fare il login su $remote_host come utente $remote_user digitare semplicemente

ssh $remote_user@$remote_host

e inserire la password. Se il nome utente remoto è uguale a quello locale, si può omettere la parte $remote_user@ e scrivere solamente

ssh $remote_host

Se questa è la prima volta che si fa il login sul computer remoto, ssh chiede se si è certi di volersi connettere. Rispondere "sì" dopo aver verificato il fingerprint e poi inserire la propria password, e ssh effettua il login remoto.

Usando chiavi condivise

Una delle funzioni di ssh è l'uso di una coppia di chiavi privata/pubblica per connettersi ad un host remoto. Questo metodo permette il login ad un host remoto senza dover digitare ogni volta la propria password. Per farlo è necessario generare una coppia di chiavi privata/pubblica sulla macchina locale e depositare la chiave sull'host remoto.

Per generare la chiave si usa il programma ssh-keygen

ssh-keygen -t rsa

Questo programma genera una coppia di chiavi privata/pubblica nella directory ~/.ssh. Il programma chiede prima i file di destinazione per le chiavi, che sono in modo predefinito posizionati in ~/.ssh. Successivamente viene richiesta una passphrase.

Nota bene: è raccomandato di non lasciare la passphrase vuota. Un autore di un attacco che riuscisse ad ottenere la chiave privata potrebbe altrimenti connettersi agli host dove è stata depositata la chiave pubblica dato che la passphrase è vuota. Scegliere una passphrase lunga e complessa.

La chiave privata è is id_rsa (non darla a nessun altro), la chiave pubblica è id_rsa.pub.

Si può copiare la propria chiave pubblica su un host remoto usando il comando ssh-copy-id

ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host

Ora ci si può connettere semplicemente all'host remoto e verrà richiesta la passphase. Una volta inserita si è connessi all'host remoto. In caso di una nuova connessione la passphrase non viene più richiesta per tutta l'intera sessione.

Comandi in remoto

Se si desidera eseguire un solo comando sul computer remoto, non è necessario fare il login. Si può semplicemente dire a ssh di eseguire il comando senza login, ad esempio:

ssh $remote_user@$remote_host 'ls *.txt'

elenca tutti i file con estensione .txt sul computer remoto. Questo comando funziona con le virgolette singole '...' come nell'esempio, con le virgolette doppie "..." e senza virgolette. Ci possono essere differenze tra le tre cose, però, anche se non verranno documentate in questa pagina.

SSH senza password

Se si lavora spesso su un computer remoto, dover digitare la password ogni volta che si usa ssh può diventare noioso. Si può configurare ssh in modo che non chieda più la password per quella particolare connessione. Si deve generare sulla propria macchina una chiave di cifratura privata e una pubblica e fornire la chiave pubblica alla macchina remota.

Per generare le chiavi eseguire:

ssh-keygen

e rispondere a tutte le domande semplicemente premendo Invio.

Per fornire la chiave pubblica alla macchina remota, creare prima una directory .ssh su di essa (se non è già presente) e poi aggiungere la chiave pubblica della propria macchina locale al file authorized_keys sulla macchina remota.

ssh $remote_user@$remote_host mkdir -p .ssh
cat .ssh/id_rsa.pub | ssh $remote_user@$remote_host 'cat >> .ssh/authorized_keys'

Notare che in questo esempio il comando cat all'interno del comando ssh prende il proprio input dalla pipe.

Oppure si può usare

ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host

Da questo momento in poi dovrebbe essere possibile fare il login con ssh senza password.

Login SSH in Debian da un altro sistema operativo

SSH e la sicurezza

Server SSH

Client SSH