Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Comment échanger une clé SSH pour une authentification sans mot de passe entre des serveurs Linux?

échange de clés ssh
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Implémenter l'authentification basée sur les clés SSH sur Linux

SSH (Secured Shell) est un protocole qui crée une connexion sécurisée par cryptographie entre le client SSH et les serveurs distants.

En utilisant SSH, vous pouvez gérer et administrer des serveurs distants en toute sécurité. Cela peut être utile de plusieurs manières.

  • Déploiement multi-serveurs
  • Arrêter / démarrer les services à distance
  • Créateur

et toute votre créativité (espérons-le)…

En tant qu'administrateur système, ce sont des informations de base à connaître.

Apprenons comment…

Je vais générer une clé privée et une clé publique. La clé privée doit être stockée sur votre machine client ssh et doit être gardée sécurisée. La clé publique doit être copiée sur le serveur distant pour se connecter à ce serveur à partir de la machine client SSH sans mot de passe requis.

Vous apprendrez ce qui suit.

  • Installez SSH (non requis si déjà installé)
  • Générer des clés SSH
  • Copier la clé SSH sur un serveur distant
  • Connectez-vous au serveur distant en utilisant SSH

À des fins de démonstration, j'ai 2 serveurs avec des adresses IP ci-dessous, un système est un client et l'autre est un serveur sur lequel je vais me connecter via ssh à partir d'une machine cliente.

  • Client (utilisateur -> geekflare): 192.168.56.102
  • À distance (utilisateur -> ubuntu): 192.168.56.101

Installing SSH

Avant de suivre les étapes mentionnées dans cet article, assurez-vous openssh-server est installé sur les serveurs. S'il n'est pas installé, exécutez les commandes ci-dessous pour l'installer.

sudo apt-get install openssh-server

sudo systemctl enable ssh

sudo systemctl start ssh

Vous pouvez exécuter la commande ssh pour vérifier si elle est installée sur le système ou non.

geekflare@geekflare:~$ ssh

usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]

           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]

           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]

           [-i identity_file] [-J [user@]host[:port]] [-L address]

           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]

           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]

           [-w local_tun[:remote_tun]] destination [command]

Generate SSH Keys

Cela doit être fait sur un serveur client.

Exécutez le ssh-keygen commande pour générer une clé SSH. Appuyez simplement sur Entrée quand il demande le fichier, la phrase secrète, la même phrase secrète. Il génère une paire de clés dans le répertoire ~ / .ssh par défaut. Id_rsa est la clé privée et id_rsa.pub est la clé publique associée.

geekflare@geekflare:~$ ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/home/geekflare/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/geekflare/.ssh/id_rsa.

Your public key has been saved in /home/geekflare/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:3XDm62tzJegGm8oAmFYCyeFZovJOuU42zNgyn9GzH30 geekflare@geekflare

The key's randomart image is:

+---[RSA 2048]----+

|o+..             |

|+o+              |

|oo. .     . o    |

|.. *     . *     |

|  B .   S . o.   |

| O o . .  . ... .|

|+ @ o o . E=.  o |

| B + o + .o.= .  |

|  + ... o. oo+   |

+----[SHA256]-----+

Il générera deux nouveaux fichiers dans ~/.ssh répertoire.

Copy SSH Key to Remote Server

La clé privée doit être copiée ~/.ssh dossier sur un serveur distant. La plupart des serveurs devraient déjà avoir ce dossier sinon, vous devez créer un dossier.

Et, pour ce faire:

  • Connectez-vous au serveur distant avec l'utilisateur que vous souhaitez connecter. Dans mon cas, c'est ubuntu
  • Assurez-vous que le répertoire de travail actuel est le répertoire de base de l'utilisateur, puis créez un dossier .ssh. Vous pouvez également utiliser la commande unique suivante pour en créer un
mkdir -p ~/.ssh

Si vous avez déjà un dossier .ssh, effectuez une sauvegarde de celui-ci.

Ensuite, poussons la clé publique à partir d'un serveur client.

Sur l'ordinateur client (192.168.56.102), exécutez la commande ci-dessous pour copier la clé publique sur le serveur distant à l'intérieur d'un authorized_keys fichier dans le répertoire .ssh.

geekflare@geekflare:~$ cat .ssh/id_rsa.pub | ssh ubuntu@192.168.56.101 'cat >> .ssh/authorized_keys'

ubuntu@192.168.56.101's password:

Exécutez la commande ci-dessous pour définir les autorisations sur le fichier authorized_keys sur le serveur distant.

geekflare@geekflare:~$ ssh ubuntu@192.168.56.101 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

Super, cela conclut que la clé est échangée et que l'autorisation est définie.

Login to Remote Server using SSH

Testons pour voir si cela fonctionne!

Connectez-vous au serveur distant (192.168.56.101) depuis une machine cliente (192.168.56.102) en tant qu'utilisateur geekflare.

Exécutez la commande ci-dessous pour tester, elle ne demandera pas de mot de passe cette fois.

geekflare@geekflare:~$ ssh ubuntu@192.168.56.101

Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-151-generic i686)

 * Documentation:  https://help.ubuntu.com

 * Management:     https://landscape.canonical.com

 * Support:        https://ubuntu.com/advantage

346 packages can be updated.

11 updates are security updates.

Last login: Mon Jun 17 00:10:32 2019 from 192.168.56.101

Voici…

Je me suis connecté avec succès au serveur distant. L'exécution de la commande ci-dessous donnera les détails IP de la machine distante.

ubuntu@ubuntu:~$ ifconfig

enp0s3    Link encap:Ethernet  HWaddr 08:00:27:9b:47:86 

          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

          inet6 addr: fe80::5c62:3267:b752:fe5d/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:20239 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5406 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:22678039 (22.6 MB)  TX bytes:701710 (701.7 KB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:a9:4a:6b 

          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0

          inet6 addr: fe80::54a9:761c:9034:21a2/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:330 errors:0 dropped:0 overruns:0 frame:0

          TX packets:197 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:42847 (42.8 KB)  TX bytes:32774 (32.7 KB)

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:997 errors:0 dropped:0 overruns:0 frame:0

          TX packets:997 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:79654 (79.6 KB)  TX bytes:79654 (79.6 KB)

Conclusion

La configuration de l'échange de clés SSH est très simple, comme vous pouvez le voir. J'espère que cela vous aidera et que vous êtes intéressé par l'apprentissage de l'administration et du dépannage Linux, alors consultez ceci Cours Udemy.

Merci à nos commanditaires
Plus de bonnes lectures sur Linux
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder