Ci sono tanti buoni motivi per collegarsi ad un server via ssh; oltre agli indubbi benefici in termini di sicurezza, questa modalità è di fatto lo standard per connessione ai server remoti... Vediamo come realizzare un collegamento sicuro ed efficiente...

La generazione di una coppia chiavi ssh (pubblica e privata) è un'operazione fondamentale se si vuole procedere al collegamento via ssh.

SSH (Secure SHell, shell sicura) è il protocollo che di fatto ha soppiantato il vetusto ma ancora utilizzato telnet, facendo compiere un deciso passo in avanti in termini di sicurezza; esso permette infatti di stabilire una sessione remota cifrata tramite interfaccia a riga di comando con un altro host di una rete.

La sicurezza è determinata da una connessione cifrata che avviene solo in caso di successo nello scambio tra chiavi tra server e client secondo questo schema:

Generazione delle chiavi SSH

Si generano tramite il comando : ssh-keygen -b 2048

Tramite questo comando si genererà una coppia di chiavi; una privata (da conservare e non condividere) e una pubblica (da condividere) caratterizzata dall'estensione .pub (il parametro -b serve ad indicare la lunghezza della chiave)

Durante la generazione è consigliabile NON inserire una passphrase (premere invio senza digitare nulla) per non essere obbligati a digitarla al momento del collegamento; è solo un'ulteriore forma di protezione, che ci protegge da eventuali furti di chiavi.

Adesso che siamo in possesso della nostra coppia di chiavi (presenti nella directory .ssh (dir nascosta) all'interno della nostra home personale, possiamo prendere la chiave pubblica (estensione .pub) e copiarne il contenuto nel file ~/.ssh/authorized_keys presente sul server, nella home relativa all'utente usato su quella macchina e salviamo il file; a questo proposito specialmente se operiamo in ambiente windows prestiamo attenzione a non copiare caratteri extra, in quanto essi sono responsabili di eventuali fallimenti di autenticazione.

Volendo essere sicuri, è possibile effettuare la copia ricorrendo al comando

ssh-copy-id -i ~/.ssh/id_rsa.pub utente@server indicando nome utente e nome del server in cui vogliamo copiare la chiave, oppure ancora utilizzando il comando:

scp -P <porta> ~/.ssh/id_rsa.pub <username>@<ip del server>:~/.ssh/authorized_keys

Sul server, in cui deve essere già presente un'installazione di base funzionante di SSH, è necessario aggiornare il file /etc/ssh/sshd_config e settare i campi:

 

HostbasedAuthentication yes

RSAAuthentication yes

PubkeyAuthentication yes

Ora possiamo riavviare il servizio:

# /etc/init.d/ssh restart

Se tutto è andato per il verso giusto potremo connetterci digitando

ssh utente@server

Se non funziona?

Le problematiche possono essere molteplici; da caratteri spuri presente nel file ~/.ssh/authorized_keys, a problemi di permessi sui file; la mancata autenticazione avviene per il 90% dei casi da questo.

Una connessione completamente automatica

Volendo automatizzare ancora di più il processo di collegamento, possiamo utilizzare il config, presente nella dir .ssh, e aggiungervi una blocco di voci

Host nomedelcollegamento (ad esempio server1)
HostName nome_o_indirizzo_del_sever (ad esempio 192.168.0.10)
User nome_utente

Dopo aver salvato il file config, per collegarsi al server 192.168.0.10 sarà sufficiente dare il comando ssh server1 per fare in modo che si effettui una connessione al server specificato nel file config con l'utenza indicata ed in modo completamente automatico e trasparente per l'utente, a meno che non si sia impostata una passphrase, nel qual caso sarà necessario indicarla al momento della connessione...