Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En Linux et Sécurité Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Mettre en œuvre l'authentification par clé SSH sous Linux

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

Grâce à SSH, vous pouvez gérer et administrer des serveurs distants en toute sécurité. Cela peut s'avérer utile à bien des égards.

  • Déploiement de plusieurs serveurs
  • Arrêt/démarrage de services à distance
  • Automatisation

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

En tant qu'administrateur système, il s'agit d'un peu de choses basiques à savoir

Voyons comment..

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

Vous apprendrez ce qui suit

  • Installer SSH (non requis si déjà installé)
  • Générer des clés SSH
  • Copier la clé SSH sur un serveur distant
  • Se connecter au serveur distant à l'aide de SSH

Pour la démonstration, j'ai 2 serveurs avec les 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
  • Remote (utilisateur -> ubuntu) : 192.168.56.101

Installation de SSH

Avant de suivre les étapes mentionnées dans cet article, assurez-vous que 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

utilisation : ssh [-46AaCfGgKkMnqsTtVvXxYy] [-B bind_interface]

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

 [-E fichier_journal] [-e escape_char] [-F fichier_config] [-I pkcs11]

 [-i fichier_identité] [-J [user@]host[:port]] [-L adresse]

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

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

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

Générer des clés SSH

Cette opération doit être effectuée sur un serveur client

Exécutez la commande ssh-keygen pour générer une clé SSH. Appuyez simplement sur la touche Entrée lorsqu'on vous demande le fichier, la phrase de passe et la même phrase de passe. Par défaut, la commande génère une paire de clés dans le répertoire ~/.ssh. 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 :

Votre identification a été sauvegardée dans /home/geekflare/.ssh/id_rsa.

Votre clé publique a été sauvegardée dans /home/geekflare/.ssh/id_rsa.pub.

L'empreinte de la clé est :

SHA256:3XDm62tzJegGm8oAmFYCyeFZovJOu42zNgyn9GzH30 geekflare@geekflare

L'image aléatoire de la clé est :

 ---[RSA 2048]----

|o ...             |

| o |

|oo. . o |

|... *     . *     |

| B .   S . o. |

| O o . . ... .|

| @ o o . E=. o |

|

B 

o

.o.= . |

| …

o. oo |

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

Deux nouveaux fichiers seront générés dans le répertoire ~/.ssh

Copier la clé SSH sur le serveur distant

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

Pour ce faire, procédez comme suit

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

Si vous avez déjà un dossier .ssh, faites-en une sauvegarde

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

Sur la machine cliente (192.168.56.102), exécutez la commande ci-dessous pour copier la clé publique sur le serveur distant à l'intérieur d'un fichier authorized_keys 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 permissions 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"

Très bien, cette clé de conclusion est échangée et les autorisations sont toutes définies

Connectez-vous au serveur distant à l'aide de 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, il ne vous demandera pas de mot de passe cette fois-ci

geekflare@geekflare:~$ ssh ubuntu@192.168.56.101

Bienvenue sur Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-151-generic i686)

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

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

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

346 paquets peuvent être mis à jour.

11 mises à jour sont des mises à jour de sécurité.

Dernière connexion : Mon Jun 17 00:10:32 2019 from 192.168.56.101

Et voilà.

Je me suis connecté au serveur distant avec succès. En exécutant la commande ci-dessous, vous obtiendrez les détails de l'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) Octets TX:79654 (79.6 KB)

Conclusion

La mise en place de l'échange de clés SSH est très simple comme vous pouvez le constater. J'espère que cela vous a aidé et que vous êtes intéressé par l'apprentissage de l'administration et du dépannage de Linux, alors consultez ce cours Udemy.

  • Avi
    Auteur
    Avi est un passionné de technologie avec une expertise dans les technologies en vogue telles que DevOps, Cloud Computing, Big Data et bien d'autres. Il est passionné par l'apprentissage des technologies de pointe et le partage de ses connaissances avec d'autres... en savoir plus
Merci à nos sponsors
D'autres bonnes lectures sur Linux
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le 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, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus