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.
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 surEntrer
. - 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 ennon
é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.