rss logo

Comment configurer un accès SSH sans mot de passe sur Debian

Logo OpenSSH

Dans cet article, vous apprendrez à configurer un accès SSH sans mot de passe sur Debian à l’aide de paires de clés SSH.

Le SSH sans mot de passe n’est pas seulement pratique — il offre également des avantages importants en matière de sécurité et d’automatisation :

Remarque : Cet article s’inspire de l’excellent tutoriel Tecmint.

Architecture de la connexion SSH

Pour cette démonstration, nous allons faire simple. L’objectif est de configurer un accès SSH sans mot de passe entre deux machines, permettant à l’utilisateur eric de se connecter à distance à l’hôte Marsh sans avoir à saisir de mot de passe.

Schéma montrant une connexion SSH sans mot de passe entre deux machines Debian utilisant OpenSSH, avec la clé privée sur Cartman (192.168.1.10) et la clé publique sur Marsh (192.168.1.20)

Générer et transférer la clé SSH

Commencez par générer une paire de clés publique/privée sur la machine Cartman à l’aide de la commande ssh-keygen. La clé privée reste sur la machine locale, tandis que la clé publique correspondante sera copiée sur l’hôte distant pour permettre une authentification sans mot de passe.

Optionnel : utilisez l’option -t ed25519 pour générer une clé moderne et sécurisée. Dans ce cas, vos fichiers de clés seront nommés id_ed25519 (clé privée) et id_ed25519.pub (clé publique) au lieu des noms par défaut id_rsa/id_rsa.pub.

  • Lors de la génération de la clé, vous serez invité à :
    • Choisir l’emplacement du fichier pour la nouvelle clé. Vous pouvez appuyer sur Entrée pour accepter l’emplacement par défaut (généralement dans votre répertoire personnel).
    • Définir une phrase de passe pour protéger la clé privée. Laissez-la vide si vous prévoyez d’utiliser le SSH sans mot de passe pour des scripts ou services automatisés. Utilisez une phrase de passe pour renforcer la sécurité dans les scénarios interactifs.
eric@Cartman:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/eric/.ssh/id_rsa): [Press enter key]
Created directory '/home/eric/.ssh'.
Enter passphrase (empty for no passphrase): [Press enter key]
Enter same passphrase again: [Press enter key]
Your identification has been saved in /home/eric/.ssh/id_rsa
Your public key has been saved in /home/eric/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:Ib1cGOH36Qf2/372L3Z/fhavH1WFtggItRGAJSeMUJo eric@Cartman
The key's randomart image is:
+---[RSA 3072]----+
|.o.ooo=+*+     ..|
| o. o+ o.=.   o .|
|E     . * o. o ..|
|       o = .... .|
|        S   =   .|
|           o o ..|
|            . o.o|
|             .o.X|
|             ..X^|
+----[SHA256]-----+
  • Une fois la paire de clés générée, vous devriez voir les fichiers de la clé privée et de la clé publique dans le répertoire ~/.ssh :
Représentation visuelle de la paire de clés SSH dans le dossier /home/cartman/.ssh/, montrant la clé privée (id_rsa) et la clé publique (id_rsa.pub)
  • Ensuite, toujours depuis l’hôte Cartman, créez le répertoire .ssh sur l’hôte Marsh. Ce dossier accueillera la clé publique :
eric@Cartman:~$ ssh stan@192.168.1.20 'mkdir -p .ssh'
The authenticity of host '192.168.1.20 (192.168.1.20)' can't be established.
ED25519 key fingerprint is SHA256:qpm3aOSO8AQv2CWcTh672clHGAb16CUxjUA2Cbzjqwg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
stan@192.168.1.20's password: StanPassword
  • Puis, copiez la clé publique depuis l’hôte Cartman dans le fichier authorized_keys de l’hôte Marsh :
eric@Cartman:~$ cat ~/.ssh/id_rsa.pub | ssh stan@192.168.1.20 'cat >> .ssh/authorized_keys'
SSH key-based login: Eric’s public key is added to Stan’s authorized_keys for passwordless access.
  • Ensuite, appliquez les permissions adéquates au fichier et à son dossier parent :
eric@Cartman:~$ ssh stan@192.168.1.20 "chmod 700 .ssh; chmod 600 .ssh/authorized_keys"
  • Vous devriez maintenant pouvoir vous connecter à l’hôte Marsh en tant que stan en utilisant le SSH sans mot de passe :
eric@Cartman:~$ ssh stan@192.168.1.20

Dépannage des problèmes de connexion SSH

  • Si la connexion sans mot de passe ne fonctionne pas, vous pouvez ajouter l’option -vvv à la commande SSH pour activer un mode verbeux. Cela vous aidera à diagnostiquer ce qui bloque l’authentification :
eric@Cartman:~$ ssh -vvv stan@192.168.1.20
  • Vous pouvez également consulter l’état du service SSH sur l’hôte distant afin d’examiner les journaux et éventuelles erreurs :
root@Marsh:~# journalctl -u ssh