Recherche de site Web

Comment se connecter à un serveur Ubuntu 20.04 à distance avec une clé SSH sans mot de passe


Pour ceux ayant un serveur Ubuntu ou autre serveur Linux (par exemple, Debian, CentOS et Fedora) à distance, voici comment se connecter sans mot de passe en utilisant l'authentification par clé SSH.

Comparé à la connexion par mot de passe utilisateur, l'authentification par clé SSH est plus sécurisée car seule la personne qui possède la clé est autorisée à se connecter, et les clés sont bien chiffrées par différents algorithmes. Cela rend également la connexion SSH simple en permettant de se connecter sans mot de passe.

1. Activer le service SSH (À faire côté serveur) :

Au cas où vous n'avez pas activé le service SSH sur le serveur distant. Vous devez d'abord vous connecter au serveur et exécuter la commande pour installer openssh :

sudo apt install openssh-server

Pour les serveurs CentOS et Fedora, utilisez la commande sudo dnf install openssh-server à la place.

Après l'installation, activez et démarrez le service via la commande :

sudo systemctl enable ssh && sudo systemctl start ssh

Et enfin, vérifiez l'état du service SSH en exécutant la commande :

sudo system status ssh

Si vous voyez que le service est actif et en cours d'exécution, vous pouvez commencer à connecter le serveur via SSH à distance en utilisant la commande ci-dessous sur votre ordinateur local :

ssh user@server_ip

Remplacez l'utilisateur et l'ip_du_serveur. Et utilisez -p numéro_de_port pour spécifier le numéro de port s'il n'est pas le port par défaut 22.

2. Activer l'authentification par clé SSH (Exécuter des commandes sur le PC local) :

Les clés d'authentification sont générées sur des ordinateurs locaux. Elles consistent généralement en une clé privée et une clé publique. En téléchargeant la clé publique sur un serveur Linux distant, vous pourrez vous connecter via SSH en utilisant la clé privée sur votre machine locale.

REMARQUE : ce tutoriel a été testé sur un ordinateur local Ubuntu, bien qu'il devrait fonctionner sur la plupart des distributions Linux, y compris Debian, Fedora, CentOS et Arch Linux.

1. Installer le client OpenSSH :

Le client OpenSSH est généralement installé par défaut. Dans le cas où vous ne l'auriez pas, exécutez cette commande sur votre ordinateur local pour l'installer :

sudo apt install openssh-client

Pour CentOS et Fedora, utilisez sudo dnf install openssh openssh-clients à la place.

2. Générer une paire de clés SSH :

La commande ssh-keygen permet de générer une paire de clés SSH via les algorithmes RSA, ECDSA, et ED25519. Alors que RSA est largement utilisé et bien supporté, ED25519 offre une meilleure sécurité et de bonnes performances.

a.) Tout d'abord, créez et naviguez vers le répertoire .ssh dans la fenêtre du terminal de l'ordinateur local :

mkdir -p ~/.ssh && cd ~/.ssh

b.) Ensuite, exécutez la commande pour générer une paire de clés :

ssh-keygen -t ed25519 -f linode_ed25519 -C "root@linode"

Dans le code, vous pouvez remplacer « ed25519 » par votre algorithme de chiffrement préféré. Et « -f linode_ed25519 » spécifie le nom de la clé, « -C « root@linode » » est le commentaire optionnel.

c.) Pour des raisons de sécurité, il est fortement recommandé de ne donner aucune permission (même pas de lecture) aux autres utilisateurs, sauf pour vous-même :

chmod 600 ~/.ssh/linode_ed25519*

Changez “linode_ed25519” par le nom de clé que vous avez défini à l'étape précédente. Et il y a un astérisque “*” à la fin, donc cela s'applique également au fichier “linode_ed25519.pub”.

3. Téléchargez la clé publique sur le serveur hôte (Faites-le sur l'ordinateur local) :

Téléchargez maintenant la clé publique ("linode_ed25519.pub" dans mon cas) de l'ordinateur local vers le serveur distant, en utilisant la commande :

cd ~/.ssh && ssh-copy-id -i linode_ed25519.pub user@server_ip

N'oubliez pas d'ajouter '-p numéro' si le port d'écoute n'est pas le port par défaut 22. Et vous devez taper le mot de passe de l'utilisateur distant pour télécharger la clé.

Après cela, essayez de vous connecter en SSH à nouveau sur l'ordinateur local, il vous demandera le mot de passe de la clé que vous avez défini en b.) :

ssh user@server_ip

Si vous sélectionnez Annuler, il demandera plutôt une authentification par mot de passe utilisateur.

4. Activer la connexion SSH par clé sans mot de passe (à faire sur le PC local) :

Vous pouvez cocher « Déverrouiller automatiquement cette clé chaque fois que je suis connecté » et taper le mot de passe une seule fois dans la dernière capture d'écran. Cependant, certains environnements de bureau peuvent ne pas offrir cette fonctionnalité conviviale. C'est pourquoi le « ssh-agent », l'agent d'authentification OpenSSH, est présent pour faire le travail à votre place.

Tout d'abord, exécutez 'ssh-agent' via la commande shell :

eval 'ssh-agent'

Ensuite, ajoutez la clé SSH à l'agent :

ssh-add linode_ed25519

Après cela, la commande SSH se connectera sans taper le mot de passe de la clé d'authentification.

5. Désactiver la connexion par mot de passe pour l'utilisateur SSH (À faire côté serveur) :

Après avoir réussi à configurer l'authentification par clé, vous pouvez désactiver la connexion par mot de passe utilisateur, afin qu'aucun autre utilisateur ne puisse accéder au serveur !

Tout d'abord, connectez-vous au serveur distant et exécutez la commande pour modifier le fichier de configuration du démon ssh :

sudo nano /etc/ssh/sshd_config

Ensuite, décommentez la ligne « #PasswordAuthentication yes » et définissez sa valeur sur non, de sorte qu'elle devienne :

Authentification par mot de passe non

Ensuite, appuyez sur Ctrl+X, tapez y et appuyez sur Entrée pour enregistrer le fichier.

Enfin, rechargez SSH via

sudo systemctl reload ssh

commande et profite !