Ubuntu server - authentification SSH par clés
![]() |
Difficulté : Intermédiaire Notions : SSH, chiffrement, PKI, clé |
I. Introduction
Cette procédure vise à expliquer la mise en place de l'authentification par clé en complément, ou remplacement, de l'authentification par mot de passe.
Celle-ci renforce la sécurité pour l'administration du parc car elle ne nécessite plus d'échange de mot de passe pour l'authentification.
II. Création du couple de clé
Côté poste d'administration, se connecter avec l'utilisateur qui devra prendre la main sur les machines distante.
Utiliser la commande suivante pour générer un lot de clé :
ssh-keygen
Après le lancement, une série de question seront posées :
- Emplacement des fichiers de clé privée et clé publique.
- Passphrase de la clé.
- (si saisi ) Répétition de la passphrase.
Les clés sont alors générées.
II. Installation sur le serveur
Il va ensuite falloir copier la clé publique (celle finissant pas .pub) sur les machines où il sera nécessaire de se connecter.
2.1 Vérifications préalables
Sur les machines de destinations, il faut s'assurer que le dossier '.ssh' existe dans le répertoire 'home' de l'utilisateur.
Si ce n'est pas le cas, le créer.
Info : Il est important que les droits soient bien définis sur le répertoire .ssh et la clé copiée. Sinon la connexion SSH échouera car le serveur jugera que la clé est mal protégée et a pu être altérée.
cd ~
mkdir .ssh && chmod 700 .ssh
Puis créer le fichier 'authorized_keys' qui contiendra les clé autorisées pour cet utilisateur.
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Il sera également nécessaire de dé-commenter la ligne du fichier '/etc/ssh/sshd_config' afin d'autoriser le login par clé :
Puis relancer le service avec :
service ssh restart
2.2 Copier la clé
La méthode varie selon le client.
Depuis un linux
Utiliser la commande suivante pour pousser la clé sur le client :
ssh-copy-id <utilisateur>@<ip ou hostname>
Si c'est la première connexion, il est demandé si le serveur de destination doit être ajouté aux serveurs connus de confiance.
Répondre 'yes'.
Puis, lorsque demandé, saisir le mot de passe du compte pour se connecter au serveur.
La clé à été normalement ajouté au store du serveur et est visible dans le fichier '~/.ssh/authorized_keys'.
Depuis un windows
Sur windows, la commande 'ssh-copy-id' n'existe pas. Il faudra donc copier cette clé manuellement sur le serveur.
Pour cela, ouvrir un cmd, puis afficher le contenu du fichier de la clé publique.
Copier le contenu de cette clé dans le presse papier. Puis utiliser la commande suivante pour exécuter une commande distante sur le serveur linux :
ssh -t <user>@<ip ou hostname> "(echo '<lacléssh>' >> ~/.ssh/authorized_keys)"
Dans les deux cas, il est possible de vérifier l'ajout des clés avec :
cat ~/.ssh/authorized_keys
III. Connexion et sécurisation
3.1 Connexion
Se connecter au serveur avec la commande habituelle.
ssh <user>@<ip ou hostname>
Aucun mot de passe n'a été demandé (sauf si une passphrase a été créée pour la clé, auquel cas c'est elle qui sera demandée).
3.2 Sécurisation
Pour aller plus loin, il est possible de désactiver purement et simplement la connexion par login/mot de passe.
Pour cela, modifier le fichier '/etc/ssh/sshd_config'. Et dé-commenter puis changer l'option correspondante comme suit :
Puis relancer le service avec :
service ssh restart
Ainsi, seul le login par clé sera autorisé sur le serveur.













