Authentification par clé
Présentation
Cette page a pour objet de décrire comment réaliser une authentification par clé qu travers du protocole SSH.
Description
L'authentification SSH par clé permet de s'authentifier sans mot de passe. Cela est très utile dans l'utilisation de certains outils (exemple : Jenkins qui doit faire des actions sur un serveur distant).
Une telle authentification est à sens unique. Il est donc question de serveur d'origine (d'où la connexion SSH part) et de serveur cible (là on la connexion SSH s'établie).
Mise en œuvre
Avec ssh-copy-id
Cette technique repose sur la présence du paquet ssh-copy-id
sur le serveur d'origine.
Méthode simple
La méthode simple de mise en place de l'authentification SSH par clé repose sur la clé SSH par défaut,~/.ssh/id_rsa
, de l'utilisateur d'origine sur le serveur d'origine.
Pour vérifier la présence d'une telle clé, taper la commande suivante :
ls -la ~/.ssh/id_rsa
Si elle est déjà présente, passer à l'étape suivante. En son absence, la générer avec la commande :
ssh-keygen
Exemple de retour de création de clé SSH :
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. 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:VcmCKsJzjgdmkxq9y/Y8VnuSJY9SjSSyWDyhOrAsEsE root@vmwebpic02 The key's randomart image is: +---[RSA 2048]----+ |. . ... | |.E. . ..o | | * o . .. | |= / + o . | |+X & + oS | |O.+ o = o | |oo o o B | | +.+ = o | | . ooo o | +----[SHA256]-----+
Une fois la clé créée, lancer la commande ssh-copy-id
depuis le serveur d'origine avec l'utilisateur d'origine vers l'utilisateur cible sur le serveur cible. Par exemple, en étant connecté en tant que root sur le serveur sendingserver, vers le serveur targetserver avec l'utilisateur www, la commande serait la suivante :
ssh-copy-id www@targetserver
Exemple de retour :
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host 'targetserver (192.168.0.100)' can't be established. ECDSA key fingerprint is SHA256:l6DJt+zp+BhqCE0So2dJIzF2NAlZh1OiBGTdVpjRWI8. 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 Password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'www@targetserver'" and check to make sure that only the key(s) you wanted were added.
La clé est désormais déployée sur le serveur cible. Pour tester, lancer une connexion SSH :
ssh www@targetserver
La connexion devrait s'établir sans demander de mot passe. Si c'est bien le cas, l'opération s'est bien réalisée.