SSH sans mots de passe
Comment mettre en place une connexion SSH sans mot de passe entre un client Debian et un serveur Debian.
Connexion SSH sans mot de passe entre 2 machines Debian
La connexion SSH sans mot de passe, également appelée authentification par clé publique, est une méthode sécurisée et pratique pour se connecter à distance à un serveur.
- la clé privée reste uniquement sur le client
- la clé publique est copiée sur tous les serveurs sur lesquels on souhaite se connecter sans mot de passe
Voici les étapes à suivre pour mettre en place une connexion SSH sans mot de passe entre un client Debian et un serveur Debian.
1) Générer les clés SSH sur le client
Nous allons générer une paire de clés SSH sur le client : une clé privée et une clé publique.
Sur la machine cliente, ouvrez un terminal et exécutez la commande suivante :
ssh-keygen -t rsa -b 4096
Cette commande génère une paire de clés RSA de 4096 bits.
- Appuyez sur Entrée pour accepter l'emplacement par défaut (
~/.ssh/id_rsa
) - et laissez la passphrase vide pour une connexion sans mot de passe.
2) Copier la clé publique sur le serveur
Utilisez la commande ssh-copy-id
pour copier votre clé publique sur le serveur :
ssh-copy-id utilisateur@adresse_ip_serveur
Remplacez :
utilisateur
par votre nom d'utilisateur sur le serveur- et
adresse_ip_serveur
par l'adresse IP ou le nom d'hôte du serveur.
3) Vérifier les permissions sur le serveur
Connectez-vous au serveur et vérifiez les permissions du fichier authorized_keys
:
ssh utilisateur@adresse_ip_serveur
ls -l ~/.ssh/authorized_keys
Les permissions doivent être 600 -rw-------
.
Si ce n'est pas le cas, corrigez-les :
chmod 600 ~/.ssh/authorized_keys
4) Configurer SSH sur le serveur
Éditez le fichier de configuration SSH sur le serveur :
sudo nano /etc/ssh/sshd_config
Assurez-vous que les lignes suivantes sont présentes et non commentées :
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
5) Redémarrer le service SSH
Après avoir modifié la configuration, redémarrez le service SSH :
sudo systemctl restart sshd
ou
sudo service sshd restart
6) Tester la connexion
Depuis le client, testez la connexion SSH sans mot de passe :
ssh utilisateur@adresse_ip_serveur
Vous devriez maintenant pouvoir vous connecter sans entrer de mot de passe.
Sécurité supplémentaire
Pour renforcer la sécurité, vous pouvez désactiver l'authentification par mot de passe sur le serveur.
Ne désactivez l'authentification par mot de passe uniquement si la connexion SSH sans mot de passe fonctionne.
Pour désactiver l'authentification par mot de passe, il suffit d'éditer le fichier /etc/ssh/sshd_config
et modifier la ligne suivante :
PasswordAuthentication no
N'oubliez pas de redémarrer le service SSH après cette modification.
En suivant ces étapes, vous aurez mis en place une connexion SSH sécurisée sans mot de passe entre votre client SSH et votre serveur Linux, améliorant ainsi la sécurité et la commodité de vos connexions à distance.
Test de compréhension/mémorisation
TP pour réfléchir et résoudre des problèmes
Ce TP vous apprendra à configurer une authentification par clé publique pour des connexions SSH sans mot de passe dans différents contextes :
- Client Linux vers serveur Linux.
- Client Windows vers serveur Linux.
- Client Linux vers GitHub.
- Client Windows vers GitHub.
1. Connexion sans mot de passe d'un client Linux vers un serveur Linux
Étapes :
-
Générer une paire de clés SSH sur le client Linux :
- Ouvrez un terminal et exécutez :
ssh-keygen -t rsa -b 4096
- Laissez les paramètres par défaut et appuyez sur Entrée. Une paire de clés sera générée dans le répertoire
~/.ssh
.
- Ouvrez un terminal et exécutez :
-
Copier la clé publique sur le serveur Linux :
- Utilisez la commande suivante pour transférer automatiquement la clé publique au serveur :
ssh-copy-id user@adresse_ip_ou_nom_du_serveur
- Remplacez
user
par votre nom d’utilisateur sur le serveur etadresse_ip_ou_nom_du_serveur
par l’adresse IP ou le nom de domaine du serveur.
- Utilisez la commande suivante pour transférer automatiquement la clé publique au serveur :
-
Tester la connexion sans mot de passe :
- Essayez de vous connecter au serveur Linux :
ssh user@adresse_ip_ou_nom_du_serveur
- Vous ne devriez plus avoir à entrer de mot de passe.
- Essayez de vous connecter au serveur Linux :
2. Connexion sans mot de passe d'un client Windows vers un serveur Linux
Option A : Utiliser Git Bash
-
Générer une paire de clés SSH avec Git Bash :
- Ouvrez Git Bash et exécutez :
ssh-keygen -t rsa -b 4096
- Acceptez les valeurs par défaut.
- Ouvrez Git Bash et exécutez :
-
Copier la clé publique vers le serveur Linux :
- Si
ssh-copy-id
est disponible :ssh-copy-id user@adresse_ip_ou_nom_du_serveur
- Sinon, affichez la clé publique et copiez-la manuellement :
Connectez-vous au serveur Linux avec votre mot de passe, puis ajoutez la clé au fichier
cat ~/.ssh/id_rsa.pub
~/.ssh/authorized_keys
:echo "contenu_de_la_clé_publique" >> ~/.ssh/authorized_keys
- Si
-
Tester la connexion :
- Essayez de vous connecter avec Git Bash :
ssh user@adresse_ip_ou_nom_du_serveur
- Essayez de vous connecter avec Git Bash :
Option B : Utiliser PuTTY
-
Générer une paire de clés avec PuTTYgen :
- Téléchargez PuTTYgen.
- Sélectionnez RSA avec une longueur de 4096 bits, puis cliquez sur Generate.
- Sauvegardez la clé privée (.ppk) et copiez la clé publique.
-
Copier la clé publique vers le serveur Linux :
- Connectez-vous au serveur via PuTTY et ajoutez manuellement la clé publique dans le fichier
~/.ssh/authorized_keys
.
- Connectez-vous au serveur via PuTTY et ajoutez manuellement la clé publique dans le fichier
-
Configurer PuTTY pour utiliser la clé privée :
- Dans PuTTY, allez dans Connection > SSH > Auth, et spécifiez le chemin de la clé privée.
-
Tester la connexion :
- Connectez-vous au serveur via PuTTY sans mot de passe.
Option C : Utiliser PowerShell ou l'Invite de commandes
-
Générer une paire de clés SSH :
- Ouvrez PowerShell ou l’Invite de commandes et exécutez :
ssh-keygen -t rsa -b 4096
- Par défaut, les clés sont enregistrées dans
C:\Users\<nom_utilisateur>\.ssh
.
- Ouvrez PowerShell ou l’Invite de commandes et exécutez :
-
Copier la clé publique vers le serveur Linux :
- Avec la commande
ssh-copy-id
:ssh-copy-id user@adresse_ip_ou_nom_du_serveur
- Si elle n’est pas disponible, copiez manuellement la clé publique (
id_rsa.pub
) sur le serveur, comme dans l’Option A.
- Avec la commande
-
Tester la connexion :
- Essayez de vous connecter via PowerShell ou l’Invite de commandes :
ssh user@adresse_ip_ou_nom_du_serveur
- Essayez de vous connecter via PowerShell ou l’Invite de commandes :
3. Connexion sans mot de passe d'un client Linux vers GitHub
Étapes :
-
Générer une paire de clés SSH :
- Exécutez :
ssh-keygen -t rsa -b 4096 -C "votre_email_utilisé_sur_GitHub"
- Exécutez :
-
Ajouter la clé publique à GitHub :
- Affichez le contenu de la clé publique :
cat ~/.ssh/id_rsa.pub
- Copiez le contenu et ajoutez-le à GitHub via Settings > SSH and GPG keys → New SSH Key.
- Affichez le contenu de la clé publique :
-
Tester la connexion :
- Exécutez :
ssh -T git@github.com
- Exécutez :
4. Connexion sans mot de passe d'un client Windows vers GitHub
Option A : Utiliser Git Bash
-
Générer une paire de clés SSH :
- Ouvrez Git Bash et exécutez :
ssh-keygen -t rsa -b 4096 -C "votre_email_utilisé_sur_GitHub"
- Ouvrez Git Bash et exécutez :
-
Ajouter la clé publique à GitHub :
- Affichez le contenu :
cat ~/.ssh/id_rsa.pub
- Copiez le contenu et ajoutez-le dans GitHub.
- Affichez le contenu :
-
Tester la connexion :
- Exécutez :
ssh -T git@github.com
- Exécutez :
Option B : Utiliser PuTTY
-
Générer une clé avec PuTTYgen :
- Suivez les étapes mentionnées précédemment.
-
Ajouter la clé publique à GitHub :
- Copiez la clé publique et ajoutez-la à GitHub.
-
Tester la connexion :
- Utilisez Git ou un outil compatible pour tester la connexion.
Option C : Utiliser PowerShell ou l'Invite de commandes
-
Générer une paire de clés SSH :
- Suivez les mêmes étapes que pour Git Bash.
-
Ajouter la clé publique à GitHub :
- Affichez le contenu de la clé publique :
type C:\Users\<nom_utilisateur>\.ssh\id_rsa.pub
- Copiez et ajoutez-la à GitHub.
- Affichez le contenu de la clé publique :
-
Tester la connexion :
- Exécutez :
ssh -T git@github.com
- Exécutez :