Le chiavi SSH sono come indica il nome: delle chiavi. Esse permettono di “aprire” una sessione SSH senza dover inserire la password o in altri casi di velocizzare l’avvio di una sessione singola o di multiple sessioni SSH evitando di ripetere in maniera forzata gli stessi comandi.

Molto spesso infatti durante la giornata “tipo” dell’amministratore medio può capitare di connettersi “più e più volte” ad una sessione aperta con demone ssh sul proprio server remoto. Per evitare di digitare ogni volta gli stessi comandi e alle volte “dannatamente” ripetitivi ci sono due strade:

  • 1° CASO: CONNESSIONE AUTOMATICA SENZA IMMISSIONE DI PASSWORD.

Per prima cosa è necessario  creare la chiave SSH. Lo strumento che ci evita rogne e ci semplifica la vita è: ssh-keygen.

~$ ssh-keygen -t dsa -N ''

NB: Il comando genera una chiave random, che non prevede l’autenticazione via password. Verranno create due chiavi nella directory ~/.ssh/ ossia:

id_dsa : che è la chiave client locale "PRIVATE KEY".
id_dsa.pub : che è la chiave che provvederemo a copiare sul server "PUBLIC KEY".

Esempio:

~$ scp -P 12345 ~/.ssh/id_dsa.pub user@host:/home/user_remoto_server/.ssh/authorized_keys2

Oppure è possibile ottenere lo stesso risultato con:

~$ cat ~/.ssh/id_dsa.pub | ssh example_server.org "cat >> ~/.ssh/authorized_keys"

Spostata la chiave sul server sarà sufficiente una connessione ssh al server e verremo loggati in shell login senza immettere la password.

NB: Anche con tale operazione saremo costretti ogni volta a digitare per loggarci una cosa simile a:

~$ ssh user@host.it -P porta
~$ vi ~/.ssh/config

Dentro di esso incolleremo stringhe simili a queste:

Host servermio
Hostname 100.100.80.71
User pippo
Port 12345

Host virtuale
Hostname macchina.dominio.it
User esempio
Port 22222

Creato il conf per connetterci senza inserire password e senza incollare ogni volta “dati utente, porta etc..”, basterà dare da shell il comando:

~$ ssh servermio

e/o

~$ ssh virtuale

Saremo quindi autologgati.

NB: Nei casi di gestione privata di un client che droppa tutti gli accessi esterni da “classi ed utenza” verso l’interno e quindi negli stessi casi in cui si autoaccerta di non avere servizzi che potrebbero causare e/o compromettere la sicurezza del sistema client principale può essere davvero utile l’utilizzo di tali chiavi per gli amanti dell’aministrazione “pigra”. Nel caso contrario invece: avere chiavi SSH senza password non è la cosa migliore da fare. Se infatti la chiave viene rubata, chiunque potrà connettersi ai vostri server. Quindi prima di tali operazioni, si spera che vi siate preoccupati della gestione del vostro client.

  • 2° CASO: CONNESSIONE AUTOMATIZZATA ATTRAVERSO L’IMMISSIONE DI UNA PASSWORD GESTITA DA SSH-AGENT.

Come nel 1° caso sarà necessario creare una public key, questa volta però con password accettando il percorso predefinito della destinazione della key. Esempio:

~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa):

Premeremo enter per accettare il percorso predefinito, e quindi inseriremo la password e la confermeremo:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
16:53:66:fa:b5:d3:6d:a5:9f:a9:55:73:ef:48:55:0e user@esempio

Sempre come nel 1° caso, provvederemo a copiare la public key  id_dsa.pub sul nostro server sotto il nome di authorized_keys. Esempio:

~$ cat ~/.ssh/id_dsa.pub | ssh example.it "cat >> ~/.ssh/authorized_keys

Completata la fase di generazione key con password si procede con la configurazione di SSH-Agent.

NB: SSH-agent opera semplicemente attendendo in background, aspettando quindi che vi connettiate a un server ssh. Quindi, alla prima connessione utilizzando la chiave ssh, vi chiederà la password della chiave. La volta seguente in cui vi connetterete utilizzando quella chiave, otterrete automaticamente l’accesso senza ulteriori richieste di password, grazie a ssh-agent (dovrete in pratica inserire la password una volta per ciascuna sessione di ssh-agent).

Ad ogni modo, dovrete comunque prima avviare ssh-agent. Per utilizzare ssh-agent “standard” dovrete utilizzare un comando simile a questo:

eval `ssh-agent -s`

Il comando seguente sarà inserito in un file che si avvia prima del vostro terminale di shell, per es. ~/.xinitrc. Quindi, una volta eseguito il login, date il comando ssh-add: vi verrà chiesto di inserire la password della vostra chiave ssh e da quel momento in poi potrete utilizzare ssh senza necessitare della password.

NB: Un alternativa automatica alla gestione di ssh-add è keychain. Un applicativo che si occupa della gestione di ssh-add automatizzando e quindi richiedendo se necessario la nuova password per una nuova gestione ssh con nuova password e nuova public key.

Official Site
Slackware Slackbuild

# End