Pour configurer l’authentification par clef SSH, il faut bien paramétrer les droits sur le poste auquel on veut se connecter, sous peine de se faire éjecter d’office !
Génération d’une clef SSH :
Nouvel algorithme (Ed25519)
ssh-keygen -q -t ed25519 -P "" -C "email@domaine.tld"
Ancien algorithme (RSA)
ssh-keygen -q -t rsa -b 4096 -P "" -C "email@domaine.tld"
- -b : permet de définir la taille de la clef
- -q : mode silencieux
- -t : type de clef
- -P : Mot de passe à utiliser, vide pour une authentification sans mot de passe
- -C : commentaire (l’adresse électronique)
Activation de la connexion (sur le serveur)
Pour l’utilisateur connecté :
mkdir ~/.ssh/
chmod 700 ~/.ssh
touch $HOME/.ssh/authorized_keys
chmod 600 $HOME/.ssh/authorized_keys
chown <span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+d2hvYW1pPC9jb2RlPg=="></span> ~/.ssh/authorized_keys
Dans le fichier authorized_keys, il faut ajouter sa clef publique en faisant attention de ne pas insérer de retour à la ligne.
Il faut également bien veiller à ce que la connexion par clef soit autorisée dans le fichier /etc/ssh/sshd_config :
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
Il faut relancer SSH après la manipulation :
systemctl restart ssh
Si vous souhaitez désactiver la connexion par mot de passe pour tous les comptes :
PasswordAuthentication no
Désactiver la connexion root (sur le serveur)
La connexion du compte root est en général une mauvaise idée, il vaut mieux passer par un compte secondaire qui passera en mode super-utilisateur lorsque nécessaire.
Dans le fichier /etc/ssh/sshd_config :
PermitRootLogin no
Simplifier la connexion du client
Pour faciliter la connexion du client au serveur, il faut modifier (ou créer) le fichier /.ssh/config et y ajouter :
host monserveur
Hostname adresse_du_serveur
User mon_utilisateur
IdentityFile ~/.ssh/clef_privee_ssh.id
IdentitiesOnly yes
La connexion pourra se faire ensuite directement via la commande suivante :
ssh monserveur
Remarque
Dans le cas d’un serveur OVH, il faut laisser la possibilité à OVH de se connecter via leur clef pour qu’ils puissent intervenir en cas de soucis. (Ce n’est pas obligatoire mais conseillé)
Pour cela, on ajoute uniquement les clefs OVH dans le fichier /root/.ssh/authorized_keys et on modifie le paramètre dans le fichier /etc/ssh/sshd_config :
PermitRootLogin without-password