Il problema

Si desidera automatizzare le attività sotto Linux e quindi è necessario un login SSH come ʻUtente aʼ dal computer A, al computer B come ʻUtente bʼ, senza bisogno di una password. Tuttavia, la connessione deve essere sicura.

Il principio

Utilizzare SSH con chiavi pubbliche. Al posto delle password, SSH utilizza una coppia di chiavi private e pubbliche per effettuare il login.

La procedura

Creare innanzitutto una coppia di chiavi sul computer A come utente ʻUser a'. Assicurarsi che sia salvata senza passphrase (basta premere due volte Return):

a@A> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/a/.ssh/id_rsa):
Created directory '/home/a/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/a/.ssh/id_rsa.
Your public key has been saved in /home/a/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

Accedere ora (questa volta ancora con una password) al computer B come utente b. Creare la directory .ssh nella home directory di b (se esiste già, va bene):

b@B> mkdir -p ~/.ssh

Nel terzo e ultimo passo, b@B deve consentire l'accesso con la chiave generata inizialmente. Il modo più sicuro per farlo da A è quello di usare il seguente comando (dove si deve inserire la password un'ultima volta):

a@A> cat ~/.ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'

La parte pubblica della coppia di chiavi per l'utente b viene poi aggiunta al file di testo .ssh/authorized_keys. In questo file sono ammesse più chiavi, una per riga.

Se hai fatto tutto correttamente, ora deve essere possibile accedere senza password. È possibile verificarlo, ad esempio, con:

a@A> ssh b@B hostname
B

La copia dei file con scp funziona anche senza inserire una password.

Note per altre versioni di SSH

A seconda della versione di SSH in uso, potrebbe essere necessario considerare quanto segue:

  • Il file di autorizzazione potrebbe chiamarsi authorized_keys2.
  • I diritti per .ssh potrebbero dover essere 700 (chmod 700 .ssh)
  • I diritti per .ssh/authorized_keys2 potrebbero dover essere 640.

Consigli per la sicurezza

Con la procedura qui descritta, la chiave del computer A non viene crittografata. Un malintenzionato che acceda al computer A come utente a avrà automaticamente accesso al computer B come utente b.

Linux knowledge

Questi articoli sono stati scritti dal fondatore di Checkmk molti anni fa.
Tuttavia, sono ancora validi e quindi li conserviamo sul nostro sito web.
Da allora Mathias ha sviluppato un software di monitoraggio chiamato Checkmk.

Scopri di più