Génération et utilisation de clés SSH pour l'authentification d'hôte distant
Les clés SSH constituent un moyen de vous identifier sur un hôte SSH qui utilise un système de chiffrement à clé publique et de réponse d'identification. L'avantage immédiat de cette méthode par rapport à l'authentification classique par mot de passe est la possibilité de vous faire authentifier par le serveur sans envoyer votre mot de passe sur le réseau. Vous pouvez également l'utiliser avec l'automatisation car cette méthode permet la communication avec des serveurs automatisés.
Génération de clés SSH sur Linux
Pour générer une clé SSH sur votre serveur Linux , exécutez la commande ssh-keygen
. La commande peut prendre des indicateurs si vous souhaitez personnaliser le type de clé générée et les algorithmes de signature utilisés pour générer
la clé. Voici un exemple de clé RSA 2048 bits standard sans phrase passe. La commande vous invite à indiquer l'emplacement de stockage de la clé (la valeur par défaut est $HOME/.ssh/) et une phrase passe pour sécuriser la clé 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]-----+
Copie de la clé publique sur des hôtes distants
Pour l'authentification avec un hôte distant à l'aide de votre clé SSH publique, utilisez la commande ssh-copy-id
. Utilisez l'indicateur -i
pour spécifier la clé publique à copier sur l'hôte distant.
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.
La commande ssh-copy-id ajoute les clés au fichier .ssh/authorized_key
de l'hôte distant.
Test de copie de la clé
Pour vérifier que la clé publique a été correctement copiée sur l'hôte distant, utilisez ssh sur l'hôte distant.
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:~#
Vous n'êtes pas invité à entrer le mot de passe lorsque vous utilisez ssh sur l'hôte distant.
Clés SSH avec phrase passe
La fourniture d'une phrase passe pour votre clé SSH fournit une couche de sécurité supplémentaire, mais elle peut également entraîner des problèmes lorsque vous exécutez des scripts automatisés qui requièrent la clé protégée.
L'agent ssh-agent peut gérer vos clés. Vous n'entrez qu'une seule fois la phrase passe. L'agent ssh-agent conserve votre clé en mémoire et la restitue si nécessaire. Si vous souhaitez que l'agent ssh-agent gère vos clés, exécutez la commande suivante:
eval $(ssh-agent)
Une fois que le programme a démarré la commande ssh-add pour ajouter votre clé publique à l'agent, l'utilitaire ssh-add recherche les noms de clé par défaut, dont id_rsa
est un, et les ajoute à l'agent ssh-agent. Après avoir entré
votre mot de passe, la clé "déverrouillée" est stockée avec ssh-agent et peut être utilisée pour s'authentifier auprès d'autres serveurs.
root@bck1:~# ssh-add
Enter passphrase for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
root@bck1:~#
Chaque fois que vous ouvrez une nouvelle session de terminal, vous êtes invité à entrer la phrase passe de clé. Envisagez d'exécuter les commandes suivantes pour ajouter votre fichier .bash_profile
de sorte que ssh-agent démarre
avec chaque session bash et ajoute votre clé.
echo ‘eval $(ssh-agent)’ >> ~/.bash_profile
echo ‘ssh-add’ >> ~/.bash_profile