IBM Cloud Docs
Generazione e utilizzo delle chiavi SSH per l'autenticazione host remota

Generazione e utilizzo delle chiavi SSH per l'autenticazione host remota

Le chiavi sono un modo per identificare te stesso in un server SSH che utilizza la crittografia della chiave pubblica e l'autenticazione di verifica/risposta. Un vantaggio immediato di questo metodo rispetto all'autenticazione tramite password tradizionale è che puoi essere autenticato dal server senza inviare la tua password nella rete. Puoi anche utilizzarlo in modo automatizzato perché consente la comunicazione server in modalità non presidiata.

Generazione delle chiavi SSH su Linux

Per generare una chiave SSH nel server Linux , eseguire il comando ssh-keygen. Il comando può utilizzare indicatori se si desidera personalizzare il tipo di chiave generato e gli algoritmi di firma utilizzati per generare la chiave. Questo esempio genera una chiave RSA a 2048 bit standard senza una passphrase. Il comando richiede l'ubicazione per memorizzare la chiave (il valore predefinito è $HOME/.ssh/) e una passphrase per proteggere la chiave SSH.

root@bck2:/etc# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@bck2.example.com
The key's randomart image is:
+---[RSA 2048]----+
|.  oo*%=+o..     |
|.++.oX+=. .      |
|..+ooo=. .       |
|   E.+. .o.      |
|    +   S..+     |
|     . +. =      |
|      o  = o     |
|      .o+ +      |
|       +o.       |
+----[SHA256]-----+

Copia della chiave pubblica sugli host remoti

Per autenticarti con un host remoto utilizzando la tua chiave SSH pubblica per utilizzare il comando ssh-copy-id . Utilizza l'indicatore -i per specificare la chiave pubblica da copiare nell'host remoto.

root@bck2: # ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.176.18.15
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.176.18.15 (10.176.18.15)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.

Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.176.18.15's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@10.176.18.15'"
and check to make sure that only the key(s) you wanted were added.

Il comando ssh - copy - id aggiunge le chiavi al file .ssh/authorized_key dell'host remoto.

Verifica che la chiave è stata copiata correttamente

Per verificare che la chiave pubblica sia stata copiata correttamente sull'host remoto, eseguire ssh sull'host remoto.

root@bck2:/etc# ssh root@10.176.18.15
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-53-generic x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage

Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.

Last login: Fri Feb 10 16:51:51 2017 from 169.46.3.91
root@bck1:~#

Non viene richiesta la password quando si esegue l'ssh sull'host remoto.

Chiavi SSH con una passphrase

Fornire una passphrase per la chiave SSH fornisce un ulteriore livello di sicurezza, ma può anche causare problemi quando si eseguono script automatizzati che richiedono la chiave protetta.

ssh - agent può gestire le tue chiavi. Immetti la passphrase una volta. ssh-agent conserva la tua chiave nella sua memoria e la trasmette quando necessario. Se si desidera che ssh - agent gestisca le chiavi, immettere il seguente comando:

eval $(ssh-agent)

Dopo che il programma ha avviato il comando ssh - add per aggiungere la tua chiave pubblica all'agent, il programma di utilità ssh - add ricerca i nomi chiave predefiniti, di cui id_rsa è uno, e li aggiunge all'agent ssh. Dopo che hai immesso la tua password, la chiave "sbloccata" viene archiviata con ssh-agent e può essere utilizzata per l'autenticazione con altri server.

root@bck1:~# ssh-add
Enter passphrase for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
root@bck1:~#

Ogni volta che si apre una nuova sessione terminale, viene richiesta la passphrase chiave. Considera di eseguire i seguenti comandi per aggiungere il tuo file .bash_profile in modo che ssh - agent inizi con ogni sessione bash e aggiunga la tua chiave.

echo ‘eval $(ssh-agent)’ >> ~/.bash_profile
echo ‘ssh-add’ >> ~/.bash_profile