TUTOS.EU

S'authentifier avec une clé publique avec putty

Commenter utiliser une clé publique pour ouvrir une session avec putty


Le but ici est de ne plus à avoir à saisir de mot de passe pour s'authentifier sur un serveur SSH.

Non seulement c'est plus pratique, et en plus c'est plus sécure.

 

Pour cela j'ai regardé 2 ou 3 sites pour faire marcher l'authentification sans mot de passe.

Il y a eu ssh.com mais ce n'était pas forcément une bonne idée car le site officiel de ssh donné par wikipedia est openssh.com. Ce dernier n'est pas attrayant.

doc.ubuntu-fr.org est comme souvent un très bon choix mais entre deux je suis tombé sur pixiscreen.fr qui est moins complet mais qui a fait le job.

 

Bref, pour s'authentifier avec une paire de clé, cad une publique et l'autre privée, il faut déjà les générer. Pour cela on va utiliser puttygen.

Il est livré avec putty quand on l'installe, sinon on peut le récupérer sur

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

En bas de l'interface, on peut choisir la taille de la clé.
ssh.com indique que celle par défaut, caf RSA sur 2048 bits devrait être suffisant pour la plupart des usages.

Cliquez sur Generate

Ce n'est pas obligatoire mais vous pouvez entrer par 2 fois une Passphrase, cad un mot de passe, qu'il vous faut noter ou retenir. Ainsi celui qui arrive à copier votre clé priver ne pourra pas s'en servir sans.

Entrer un éventuel commentaire.

Sauvegarder la clé publique et privée


De là, vous pouvez basiquement côté client, cad côté putty, au niveau de votre session, indiquer sous
Connection>SSH>Auth le chemin vers votre clé privée

Vous pouvez aussi utiliser pageant qui va gérer vos clés privées pour vous.

Pour cela, lancer pageant

Aller sur View keys

Ajouter une clé

Ajouter votre clé privée

Entrer sa passphrase


La configuration du service ssh côté serveur Linux peut se voir avec la commande

more /etc/ssh/sshd_config
Lien vers le fichier : cliquez ici Copier le code

Via le paramètre AuthorizedKeysFile, on voit que par défaut les clés autorisées doivent être dans
.ssh/authorized_keys

Côté de votre serveur Linux, cela va se passer au niveau du homefolder du login qui va se présenter.
Dans le répertoire du home folder il faut qu'un répertoire .ssh existe et qu'il contienne un fichier nommé authorized_keys

Donc il faut se logger avec le compte pour lequel on veut s'authentifier avec un certificat et créer le répertoire .ssh avec cette commande

mkdir ~/.ssh
Lien vers le fichier : cliquez ici Copier le code

Pour être certain, déplacez vous dans le répertoire du homefolder

cd ~
Lien vers le fichier : cliquez ici Copier le code

Modifier les droits du répertoire .ssh avec la commande

chmod 700 .ssh
Lien vers le fichier : cliquez ici Copier le code

Entrer dans le répertoire ssh

cd .ssh
Lien vers le fichier : cliquez ici Copier le code

Il faut ajouter votre clé publique dans un fichier nommé authorized_keys qui n'existe pas forcément.
Pour cela on va utiliser la commande echo à laquelle on demandera d'ajouter la clé publique dans le fichier authorized_keys.

La commande écho délimite le début et la fin de la clé par " et "
La clé publique doit être en une seule ligne, sans retour à la ligne etc

Pour copier la clé publique, dans puttygen, faire un clic droit sur cette dernière et choisir Tout sélectionner

Refaire un clic droit et copier toute la clé publique

Cote serveur coller la clé publique entre les 2 " "

La commande à adapter avec votre clé publique est donc

echo "votreclépublique" >> authorized_keys
Lien vers le fichier : cliquez ici Copier le code

Vous devez donc vous retrouver avec une commande super longue à exécuter

Sur cet autre exemple, vous remarquerez qu'en plus de la clé publique, le début de la ligne commence par ssh-rsa et qu'elle se termine par un commentaire.
C'est directement ajouté par Putty Key Generator, et c'est ce qu'il faut.

En effet si on ouvre directement le fichier de la clé publique qu'on a sauvegardé tout à l'heure, la clé ne commence pas par ssh-rsa, et le commentaire est situé au début

Bref, le fichier authorized_keys doit maintenant exister et contenir votre clé publique

La ligne doit commencer par ssh-rsa et si il y a un commentaire, il doit être à la fin.

Modifiez les droits de authorized_keys avec la commande

chmod 600 authorized_keys
Lien vers le fichier : cliquez ici Copier le code

Voila, vous devez maintenant pouvoir vous connecter avec votre paire de clés, sans à avoir à saisir un mot de passe !


Les logs d'authentification se voient avec

sudo tail -f /var/log/auth.log
Lien vers le fichier : cliquez ici Copier le code

Quand vous vous connectez avec le certificat, ce message doit passer dans les logs :

Accepted publickey for votrelogin from votreip port leport


Alors je n'ai pas testé mais on peut aller plus loin dans le concept et carrément interdire de se logger avec un login/mot de passe. Seul l'authentification par certificat passera.
En fait quand on regarde le nombre de tentatives de bots qui cherchent à ouvrir une session ssh, ça fait peur.

On trouve des sites comme https://www.cyberciti.biz/faq/how-to-disable-ssh-password-login-on-linux/
qui expliquent la manip.

En gros il faut modifier la config du serveur ssh avec

sudo nano /etc/ssh/sshd_config
Lien vers le fichier : cliquez ici Copier le code

Et passer ces réglages à no

  • ChallengeResponseAuthentication no

  • PasswordAuthentication no

  • UsePAM no

Redémarrer le serveur ssh avec

sudo systemctl reload sshd
Lien vers le fichier : cliquez ici Copier le code

Téléchargement(s)

NomSite Web d origineDescription
Putty V0.63 http://www.chiark.greenend.org... Client ssh Putty


2