Connexion SSH par clef

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="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+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