Comment ajouter des clés SSH sur Ubuntu 20.04

Configurez une connexion sécurisée sans mot de passe à votre serveur Ubuntu distant à l'aide de clés SSH

SSH est un protocole réseau client-serveur sécurisé qui aide un ordinateur client à se connecter et à communiquer avec un serveur distant. La connexion SSH garantit que les commandes saisies dans le terminal sont envoyées au serveur distant via un canal crypté.

Il existe deux types de mécanismes d'authentification utilisés pour se connecter au serveur distant, l'authentification basée sur un mot de passe (sujet aux attaques par force brute) et l'authentification basée sur les clés SSH (qui est très sécurisée).

Dans l'authentification par clé SSH, une paire de clés est générée sur l'ordinateur client, appelée clé publique et clé privée. Une copie de cette clé publique est mise à disposition sur le serveur distant. Lorsqu'un client envoie une demande de connexion au serveur, le serveur génère une chaîne aléatoire et la crypte à l'aide de la clé publique. Cette chaîne ne peut être déchiffrée qu'à l'aide de la clé privée disponible sur l'ordinateur client. Cette méthode garantit que le serveur n'est accessible qu'aux clients contenant la clé privée.

Dans ce guide, nous verrons comment configurer des clés SSH sur le serveur Ubuntu 20.04 LTS.

Vérifiez si vous avez une clé SSH existante sur votre ordinateur

Pour vérifier si une paire de clés SSH existe déjà sur votre ordinateur, tapez cette commande dans votre terminal.

ls -l ~/.ssh/id_*.pub

Si la commande ci-dessus renvoie Aucun fichier ou répertoire de ce nom ou aucun résultat, cela signifie que la paire de clés SSH n'existe pas.

Si vous disposez d'une paire de clés SSH existante, vous pouvez soit utiliser la même paire de clés pour accéder à deux serveurs distants, soit créer une paire de clés différente portant un nom différent. Passons à l'étape suivante et voyons comment générer des clés SSH pour les deux cas.

Création de clés SSH sur un ordinateur client

Pour générer une nouvelle paire de clés SSH sur votre ordinateur, tapez la commande comme indiqué ci-dessous.

ssh-keygen

Par défaut, les clés SSH sont de 2048 bits. Pour une meilleure sécurité, si vous souhaitez générer des clés SSH avec des bits plus élevés, utilisez la commande suivante.

ssh-keygen -b 4096

Si la commande s'exécute avec succès, le message suivant s'affichera sur votre écran.

génération d'une paire de clés rsa publique/privée. Entrez le fichier dans lequel enregistrer la clé (/home/harshit/.ssh/id_rsa) :

Maintenant, si vous n'avez aucune paire de clés SSH existante sur votre ordinateur, appuyez simplement sur Entrer, mais si vous disposez d'une clé SSH existante, enregistrez-la sous un nom de fichier différent, comme indiqué ci-dessous.

Entrez le fichier dans lequel enregistrer la clé (/home/your_name/.ssh/id_rsa) : /home/your_name/.ssh/id_rsa_xxx

Remplace le xxx à la fin du nom de fichier avec un nom approprié, comme indiqué ci-dessous et appuyez sur Entrer.

Entrez le fichier dans lequel enregistrer la clé (/home/your_name/.ssh/id_rsa) : /home/your_name/.ssh/id_rsa_client_1

L'invite suivante vous demandera d'entrer une phrase secrète d'une longueur arbitraire, elle assurera une sécurité à deux niveaux sur votre appareil.

Entrez la phrase secrète (vide pour aucune phrase secrète) : saisissez à nouveau la même phrase secrète :

La saisie de cette phrase secrète garantira que même si une personne a accès à votre clé privée, elle ne pourra pas accéder à votre serveur distant sans cette phrase secrète.

Une fois l'ensemble du processus terminé, le message suivant apparaît sur votre écran.

ssh-keygen -b 4096 Une fois l'ensemble du processus de génération de clé SSH terminé, le message suivant apparaît sur votre écran.

Les clés SSH ont été générées sur votre système. Il est maintenant temps de copier la clé publique sur le serveur distant.

Copier la clé publique sur le serveur Ubuntu distant

La méthode la plus simple et la plus rapide pour copier la clé publique sur le serveur distant consiste à utiliser le ssh-copie-id utilitaire. Mais si cet utilitaire n'est pas disponible sur votre machine pour une raison quelconque, vous pouvez également utiliser d'autres méthodes fournies dans cette section.

Utilisation de l'utilitaire ssh-copy-id

le ssh-copie-id L'utilitaire est par défaut disponible sur votre machine Ubuntu qui copie la clé publique de votre appareil dans le répertoire approprié de votre machine Ubuntu distante.

Pour copier la clé publique ssh, tapez simplement la commande dans votre terminal, comme indiqué ci-dessous.

ssh-copy-id username@hostname

Remplace le Nom d'utilisateur et nom d'hôte dans la commande ci-dessus avec le nom d'utilisateur et le nom d'hôte de votre serveur.

Le message suivant apparaîtra sur votre terminal si vous vous connectez à votre hébergeur pour la première fois, tapez Oui et appuyez sur Entrer.

L'authenticité de l'hôte '172.105.XX.XX (172.105.XX.XX)' ne peut pas être établie. L'empreinte digitale de la clé ECDSA est xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Êtes-vous sûr de vouloir continuer à vous connecter (oui/non) ? Oui

Maintenant le ssh-copie-id l'utilitaire recherchera le fichier portant le nom id_rsa.pub qui contient la clé publique SSH. Une fois le processus d'analyse terminé, il vous sera demandé de saisir le mot de passe de votre serveur distant, comme indiqué ci-dessous. Tapez le mot de passe et appuyez sur Entrer.

/usr/bin/ssh-copy-id : INFO : tentative de connexion avec la ou les nouvelles clés, pour filtrer celles qui sont déjà installées /usr/bin/ssh-copy-id : INFO : 1 clé(s) ) restent à installer -- si vous y êtes invité maintenant, c'est pour installer les nouvelles clés [email protected]'s password :

Une fois la clé ajoutée, le message suivant apparaîtra sur votre terminal en sortie.

Nombre de clé(s) ajoutées : 1 Essayez maintenant de vous connecter à la machine, avec : "ssh '[email protected]'" et vérifiez que seules les clés que vous vouliez ont été ajoutées.

Si vous avez plusieurs clés SSH sur votre ordinateur client, pour copier la clé publique appropriée sur votre ordinateur distant, tapez la commande dans le modèle ci-dessous.

ssh-copy-id -i id_rsa_xxx.pub username@host

Astuce

N'oubliez pas de mettre .pub à la fin du nom du fichier lors de la saisie dans le terminal.

Copie de la clé publique par la méthode de tuyauterie

Tapez la commande suivante dans le terminal si ssh-copie-id l'utilitaire n'est pas disponible. Cette commande peut sembler un peu plus longue mais elle fonctionne correctement.

chat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Remplacer nom_utilisateur_distant et Adresse IP du serveur avec votre nom d'utilisateur et votre adresse IP.

Si vous avez plusieurs clés SSH disponibles sur votre ordinateur, remplacez le id_rsa.pub avec le fichier de clé publique SSH de votre choix. Par example, id_rsa_client_1.pub.

Tapez le mot de passe de l'utilisateur distant lorsque vous y êtes invité et appuyez sur Entrer.

Mot de passe de [email protected] :

Une fois que vous avez tapé le mot de passe, le id_rsa.pub le fichier sera copié dans le clés_autorisées fichier du serveur distant.

Copier manuellement la clé publique

Utilisez cette méthode lorsque vous n'avez pas accès à votre système distant via l'authentification par mot de passe.

Ouvrez le id_rsa.pub fichier en utilisant le chat commande dans le terminal. Vous pouvez également l'ouvrir à partir d'un éditeur de texte, le but est simplement de copier le contenu du fichier.

chat ~/.ssh/id_rsa.pub

Le contenu du fichier ressemblera à, comme indiqué ci-dessous.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH votre_nom @ your_PC

Maintenant, connectez-vous à votre serveur distant et collez le contenu copié à l'aide de la commande ci-dessous. Remplace le chaîne_au-dessus avec le contenu copié.

echo chaîne_dessus >> ~/.ssh/authorized_keys

Configuration de plusieurs clés SSH (facultatif)

Cette étape est destinée aux personnes qui ont configuré plusieurs clés SSH sur leur ordinateur client. Ignorez cette section si vous n'avez qu'une seule configuration de clé SSH.

Pour gérer plusieurs clés SSH, nous allons maintenant créer un configuration fichier à l'intérieur du .ssh répertoire à l'aide de la commande ci-dessous.

cd ~/.ssh configuration vim

Taper je pour entrer en mode commande et saisir les détails de plusieurs hôtes, comme illustré dans l'exemple suivant :

Host remote-ubuntu-server HostName 172.105.XX.XX Utilisateur root IdentityFile ~/.ssh/id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX Utilisateur root IdentityFile ~/.ssh/id_rsa_client_2

De même, saisissez les détails des autres serveurs distants et leurs clés. Une fois le processus terminé, appuyez sur Esc et :wq pour enregistrer et quitter.

Maintenant, les processus suivants sont les mêmes pour les deux ayant une ou plusieurs clés SSH sur l'ordinateur client.

Connectez-vous à votre serveur distant à l'aide de clés SSH

Une fois le processus de copie de votre clé publique terminé, connectez-vous à votre serveur distant en tapant la commande comme indiqué ci-dessous.

ssh remote_username@server_ip_address

Si vous avez fourni la phrase secrète lors de la génération de la paire de clés, vous serez invité à la saisir. Une nouvelle session s'ouvrira une fois le processus d'authentification terminé.

Vous avez maintenant configuré avec succès l'authentification basée sur les clés SSH sur votre serveur distant. Mais l'authentification par mot de passe est toujours active sur votre serveur, cela signifie que votre serveur distant est toujours sujet aux attaques par force brute.

Nous allons donc maintenant désactiver complètement le mécanisme de connexion par mot de passe à partir de notre serveur distant.

Désactiver le mécanisme de connexion basé sur un mot de passe

Avant d'apporter des modifications, assurez-vous que l'utilisateur root ou tout utilisateur sudo activé pour votre compte distant a accès à votre serveur à l'aide du système d'authentification par clé SSH. Cette étape verrouillera ou désactivera complètement la connexion basée sur un mot de passe, il est donc crucial qu'au moins un utilisateur root ait accès au serveur via la clé SSH.

Connectez-vous à votre serveur Ubuntu distant et tapez la commande ci-dessous.

sudo vim /etc/ssh/sshd_config
  • presse Esc, / et tapez « Authentification par mot de passe » et appuyez sur Entrer.
  • Maintenant, appuyez sur je et remplacez la valeur de « PasswordAuthentication yes » par « PasswordAuthentication no ».
  • presse Esc et répétez le processus ci-dessus pour trouver « ChallengeResponseAuthentication », « UsePAM » et modifiez leurs valeurs en non également.
PasswordAuthentication non ChallengeResponseAuthentication non UsePAM non

Une fois que toutes les valeurs sont définies sur non, presse Esc, taper :wq et frappe Entrer.

Pour activer toutes les modifications, redémarrez le ssh service en utilisant la commande ci-dessous.

sudo systemctl redémarrer ssh

Ouvrez maintenant une nouvelle fenêtre de terminal sur votre ordinateur et vérifiez que votre authentification par clé SSH fonctionne correctement avant de fermer la session en cours.

Une fois le processus de vérification terminé, fermez toutes les sessions en cours.

Nous avons maintenant configuré avec succès l'authentification basée sur la clé SSH sur notre serveur Ubuntu 20.04. Désormais, personne ne peut se connecter à votre serveur à l'aide d'un mécanisme de connexion basé sur un mot de passe.