Aller au contenu principal

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.

info
  • 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.

attention

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
astuce

N'oubliez pas de redémarrer le service SSH après cette modification.


remarque

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


Quelle commande permet de générer une paire de clés RSA de 4096 bits ?


Quelle commande permet de copier la clé publique sur le serveur distant ?


Quelles doivent être les permissions du fichier authorized_keys sur le serveur ?


Quelle ligne doit être présente et non commentée dans le fichier sshd_config pour autoriser l'authentification par clé publique ?


Pour désactiver l'authentification par mot de passe, quelle ligne doit-on modifier dans le fichier sshd_config ?


Quel est l'emplacement par défaut de la clé privée générée par ssh-keygen ?


Quelle commande permet de vérifier les permissions du fichier authorized_keys sur le serveur ?


Quel type d'authentification SSH est considéré comme plus sécurisé que l'authentification par mot de passe ?


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 :

  1. Client Linux vers serveur Linux.
  2. Client Windows vers serveur Linux.
  3. Client Linux vers GitHub.
  4. Client Windows vers GitHub.

1. Connexion sans mot de passe d'un client Linux vers un serveur Linux

Étapes :

  1. 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.
  2. 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 et adresse_ip_ou_nom_du_serveur par l’adresse IP ou le nom de domaine du serveur.
  3. 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.

2. Connexion sans mot de passe d'un client Windows vers un serveur Linux

Option A : Utiliser Git Bash

  1. 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.
  2. 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 :
      cat ~/.ssh/id_rsa.pub
      Connectez-vous au serveur Linux avec votre mot de passe, puis ajoutez la clé au fichier ~/.ssh/authorized_keys :
      echo "contenu_de_la_clé_publique" >> ~/.ssh/authorized_keys
  3. Tester la connexion :

    • Essayez de vous connecter avec Git Bash :
      ssh user@adresse_ip_ou_nom_du_serveur

Option B : Utiliser PuTTY

  1. 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.
  2. 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.
  3. 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.
  4. Tester la connexion :

    • Connectez-vous au serveur via PuTTY sans mot de passe.

Option C : Utiliser PowerShell ou l'Invite de commandes

  1. 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.
  2. 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.
  3. Tester la connexion :

    • Essayez de vous connecter via PowerShell ou l’Invite de commandes :
      ssh user@adresse_ip_ou_nom_du_serveur

3. Connexion sans mot de passe d'un client Linux vers GitHub

Étapes :

  1. Générer une paire de clés SSH :

    • Exécutez :
      ssh-keygen -t rsa -b 4096 -C "votre_email_utilisé_sur_GitHub"
  2. 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 keysNew SSH Key.
  3. Tester la connexion :

    • Exécutez :
      ssh -T git@github.com

4. Connexion sans mot de passe d'un client Windows vers GitHub

Option A : Utiliser Git Bash

  1. 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"
  2. Ajouter la clé publique à GitHub :

    • Affichez le contenu :
      cat ~/.ssh/id_rsa.pub
    • Copiez le contenu et ajoutez-le dans GitHub.
  3. Tester la connexion :

    • Exécutez :
      ssh -T git@github.com

Option B : Utiliser PuTTY

  1. Générer une clé avec PuTTYgen :

    • Suivez les étapes mentionnées précédemment.
  2. Ajouter la clé publique à GitHub :

    • Copiez la clé publique et ajoutez-la à GitHub.
  3. Tester la connexion :

    • Utilisez Git ou un outil compatible pour tester la connexion.

Option C : Utiliser PowerShell ou l'Invite de commandes

  1. Générer une paire de clés SSH :

    • Suivez les mêmes étapes que pour Git Bash.
  2. 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.
  3. Tester la connexion :

    • Exécutez :
      ssh -T git@github.com