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
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
Pour être certain, déplacez vous dans le répertoire du homefolder
cd ~
Lien vers le fichier : cliquez ici
Modifier les droits du répertoire .ssh avec la commande
chmod 700 .ssh
Lien vers le fichier : cliquez ici
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
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
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
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
Et passer ces réglages à no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
Téléchargement(s)
Nom | Site Web d origine | Description |
---|---|---|
Putty V0.63 | http://www.chiark.greenend.org... | Client ssh Putty |
Article(s) précédent(s)