GNU/Linux >> Tutoriels Linux >  >> Linux

Comment fonctionne SSH sans mot de passe sous Linux / UNIX

SSH est un protocole permettant de transférer des données en toute sécurité entre différentes machines. Le protocole SSH utilise la cryptographie à clé publique pour permettre au client d'authentifier le serveur et, si nécessaire, pour permettre au serveur d'authentifier le client sans envoyer de mots de passe dans les deux sens.

La cryptographie à clé publique utilise une paire de clés publique-privée. La clé privée est gardée secrète et n'est jamais transférée sur le réseau. La clé publique peut être distribuée à tous les pairs. Les messages chiffrés à l'aide de la clé publique ne peuvent être déchiffrés qu'avec la clé privée.

Au moment de la connexion SSH, le client reçoit la clé publique du serveur et vérifie si elle correspond à la clé publique stockée dans $HOME/.ssh/known_hosts . Si ce test réussit et que le serveur ne dispose pas de la clé publique du client, un mot de passe est requis. Sinon, le serveur envoie un message chiffré avec la clé publique du client et si le client parvient à déchiffrer le message avec succès, en utilisant sa clé privée, la connexion est établie.

Il existe deux versions du protocole SSH, les versions 1 et 2. Les cryptages sont liés à la version du protocole. La version 1 souffre de failles de sécurité, dans la mesure du possible, la version 2 doit être utilisée. La plupart des serveurs SSH utilisent la version 2 du protocole en raison des limitations de la version 1.

Il existe 2 algorithmes pour le chiffrement des paires de clés publiques-privées, RSA et DSA .

Configuration client

Protocole Tapez Ligne de commande
Version 1 RSA1 -t rsa1
Version 2 RSA -t rsa
Version 2 DSA -t dsa

Après avoir déterminé le type d'identité que vous souhaitez/besoin, la première étape consiste à générer une paire de clés publique-privée et à copier la partie publique à l'emplacement approprié côté serveur. Dans le répertoire personnel de l'utilisateur, sur la machine cliente, exécutez (vous devriez avoir le répertoire $HOME/.ssh, sinon créez-le) :

# ssh-keygen -t dsa -f ~/.ssh/id_dsa 
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:Qmd9iBOzx02n4DvDiBwRoGbGGC12X9i41QtbBxznHZc root@geeklab
The key's randomart image is:
+---[DSA 1024]----+
|..  ..*.=o+......|
|.=.o o * %o*.ooE |
|o.B . * X O.+.   |
| +   = * * o     |
|      + S =      |
|       .   o     |
|                 |
|                 |
|                 |
+----[SHA256]-----+

Ici,
-t – est utilisé pour le type de cryptage.
-f – où stocker les paires de clés publique/privée. Dans ce cas, le répertoire .ssh sur l'accueil de l'utilisateur.

Une phrase de passe vous sera demandée après avoir exécuté la commande ci-dessus. Laissez cette partie vide, appuyez simplement sur [Entrée] si vous ne voulez pas saisir cette phrase secrète à chaque connexion. Alternativement, on pourrait configurer un agent ssh pour gérer les phrases secrètes.

La commande ci-dessus crée deux fichiers dans ~/.ssh :

# ls -lrt ~/.ssh/id_dsa*
-rw-r--r--. 1 root root 602 Apr 12 14:45 /root/.ssh/id_dsa.pub
-rw-------. 1 root root 668 Apr 12 14:45 /root/.ssh/id_dsa

Configuration du serveur

Le fichier id_dsa.pub contient la clé publique du client, qui doit être ajoutée au fichier $HOME/.ssh/authorized_keys sur le serveur :

1. Copiez le fichier id_dsa.pub sur le serveur :

client$ scp ~/.ssh/id_dsa.pub user@server:~/.ssh/id_dsa.pub

Bien sûr, cette fois, vous devrez entrer le mot de passe de l'utilisateur.

2. Maintenant, connectez-vous à la machine serveur et accédez au répertoire .ssh côté serveur

client$ ssh user@server
server$ cd .ssh

3. Maintenant, ajoutez la clé publique du client à la liste des clés publiques connues sur le serveur :

server$ cat id_dsa.pub >> authorized_keys
server$ chmod 640 authorized_keys
server$ rm id_dsa.pub
server$ exit

c'est tout.

Test

Pour tester si le ssh sans mot de passe fonctionne, utilisez la syntaxe ci-dessous :

$ ssh -l [user] [server]
Last login: Tue Apr 12 15:20:07 2007 from 192.168.0.100

ou alternativement

$ ssh [user]@[server]
Last login: Tue Oct 12 15:20:07 2007 from 192.168.0.100

Si le système ne vous a pas demandé de mot de passe, tout fonctionne correctement.

Avertissement

Assurez-vous de garder votre clé privée (~/.ssh/id_dsa) secrète ! Bien qu'il soit sûr de donner votre clé publique (~/.ssh/id_dsa.pub) au monde, vous devez faire extrêmement attention à ce que personne d'autre ne puisse lire votre clé privée (~/.ssh/id_dsa). Toute personne ayant accès à la clé privée peut se connecter à n'importe quelle machine sur laquelle la clé publique correspondante est installée.


Linux
  1. Comment changer le port SSH sous Linux

  2. Comment configurer l'authentification basée sur une clé SSH sous Linux

  3. Comment configurer Rsync avec SSH sur UNIX / Linux (rsync sans mot de passe)

  4. Comment configurer une connexion SSH sans mot de passe sous Linux

  5. Comment configurer les clés SSH pour une connexion ssh "sans mot de passe" sous Linux

Comment configurer la clé publique et privée SSH sous Linux

Comment configurer la connexion SSH sans mot de passe dans AlmaLinux

Comment configurer des clés SSH sur Debian 11 Linux

Comment SSH au serveur via Linux

Comment générer et utiliser la clé SSH dans le système Linux ?

Comment désactiver la vérification de la clé d'hôte SSH sous Linux