Servers in stock
 Checking availability...
50% off 1st month on Instant Servers - code 50OFF Sales: +1‑917‑284‑6090
Build your server

Comment configurer les clés SSH sur Ubuntu 16.04

Introduction

SSH, également connu sous le nom de Secure Shell, est un protocole chiffré généralement utilisé pour administrer et communiquer avec les serveurs, notamment sous Ubuntu. Ce tutoriel explique comment configurer les clés SSH pour Ubuntu 16.04. L'utilisation de clés SSH est recommandée à tous les utilisateurs et offre une méthode simple et sécurisée pour se connecter à votre serveur.

Étape 1 — Créer la paire de clés RSA

La première étape de la configuration des clés SSH consiste à créer une paire de clés sur la machine cliente (généralement sur un ordinateur) :


$ ssh-keygen

Pour commencer, le générateur de clés SSH créera une paire de clés RSA de 2048 bits, ce qui sera suffisamment sécurisé pour la plupart des cas d'utilisation.

Vous pouvez également utiliser l'option -b 4096 pour créer une clé plus longue de 4096 bits.

Après avoir saisi la commande, vous devriez voir l'invite suivante :


Output

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

Appuyez sur Entrée pour enregistrer la paire de clés dans le sous-répertoire .ssh/ de votre répertoire personnel, ou dans un autre chemin d'accès personnalisé.
Le message suivant devrait s'afficher :


Output

Enter passphrase ( leave empty for no passphrase):

Vous pouvez, si vous le souhaitez, saisir une phrase secrète sécurisée, ce qui est fortement recommandé. Une phrase secrète ajoute une couche de sécurité supplémentaire afin d'empêcher les utilisateurs non autorisés de se connecter. Pour en savoir plus sur la sécurité, consultez notre tutoriel sur la configuration de l'authentification par clé SSH sur un serveur Linux.

Vous devriez alors voir le résultat suivant :

Output

Your identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+

Vous disposez désormais d'une clé publique et d'une clé privée pour vous authentifier. L'étape suivante consiste à placer la clé publique sur votre serveur afin de pouvoir vous connecter via l'authentification par clé SSH.


Étape 2 — Copie de la clé publique sur le serveur Ubuntu


La méthode la plus rapide pour copier votre clé publique sur l'hôte Ubuntu consiste à utiliser l'utilitaire ssh-copy-id. Cette méthode est fortement recommandée si elle est disponible. Si ssh-copy-id n'est pas disponible sur votre machine cliente, vous pouvez utiliser l'une des deux méthodes alternatives présentées dans cette section : la copie via SSH avec mot de passe ou la copie manuelle de la clé.


Copie de la clé publique à l'aide de ssh-copy-id


L'outil ssh-copy-id est inclus par défaut dans de nombreux systèmes d'exploitation ; il est possible qu'il soit déjà disponible sur votre système local. Pour l'utiliser, vous devrez disposer d'un accès SSH protégé par mot de passe à votre serveur.
Pour utiliser cet utilitaire, il vous suffit de spécifier l'hôte distant auquel vous souhaitez vous connecter et d'indiquer le compte utilisateur disposant d'un accès SSH par mot de passe. C'est sur ce compte que votre clé publique SSH sera copiée.


La syntaxe est :


$ ssh-copy-id username@remote_host

Vous pourriez voir le message suivant :


Output

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Cela signifie que votre ordinateur local n'a pas reconnu l'hôte distant. Cela se produit généralement lors de la première connexion à un nouvel hôte. Tapez « oui » et appuyez sur Entrée pour continuer.


Ensuite, l'utilitaire analysera votre compte local à la recherche de la clé id_rsa.pub que nous avons créée précédemment. Une fois la clé trouvée, il vous demandera le mot de passe du compte de l'utilisateur distant.


Output

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@111.111.11.111's password:

Saisissez le mot de passe (notez que pour des raisons de sécurité, votre saisie ne sera pas affichée) et appuyez sur Entrée. L'utilitaire se connectera au compte sur l'hôte distant à l'aide du mot de passe fourni. Il copiera ensuite le contenu de votre clé ~/.ssh/id_rsa.pub dans un fichier nommé authorized_keys, situé dans le répertoire personnel ~/.ssh du compte distant.


Vous devriez ensuite voir le résultat suivant :


Output

Number of key(s) added: 1

Logging into the machine, with: "ssh 'username@111.111.11.111'"
and check to make sure that only the key you wanted was added.

À ce stade du processus, votre clé id_rsa.pub a été téléchargée sur le compte distant.

Copie de la clé publique via SSH

Si vous ne disposez pas de l'identifiant de copie SSH, mais que vous avez un accès SSH par mot de passe à un compte sur votre serveur, vous pouvez télécharger vos clés en utilisant une méthode SSH classique.

Pour ce faire, nous pouvons utiliser la commande `cat` afin de lire le contenu de la clé SSH publique sur notre ordinateur local et le transmettre via une connexion SSH au serveur distant. De notre côté, nous pouvons nous assurer que le répertoire `~/.ssh` existe bien sous le compte utilisé, puis enregistrer le contenu transmis dans un fichier nommé `authorized_keys` situé dans ce répertoire.

Nous utiliserons le symbole de redirection >> pour ajouter le contenu au lieu de l'écraser. Cela nous permettra d'ajouter des clés sans supprimer celles déjà ajoutées.

La commande complète ressemble à ceci :

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Vous pourriez voir le message suivant :

Output

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Cela signifie que votre ordinateur local ne reconnaît pas l'hôte distant. Ce problème se produit lors de votre première connexion à un nouvel hôte. Tapez « oui » et appuyez sur Entrée pour continuer.

Vous serez ensuite invité à saisir le mot de passe du compte utilisateur distant :

Output

username@111.111.11.111's password:

Après avoir saisi votre mot de passe, le contenu de votre clé id_rsa.pub sera copié à la fin du fichier authorized_keys du compte de l'utilisateur distant. Si l'opération a réussi, passez à l'étape 3.

Copie manuelle de la clé publique

Si vous ne disposez pas d'un accès SSH par mot de passe à votre serveur, vous devrez effectuer la procédure ci-dessus manuellement.

Nous ajouterons manuellement le contenu de votre fichier id_rsa.pub au fichier ~/.ssh/authorized_keys sur votre machine distante.

Pour afficher le contenu de votre clé id_rsa.pub, saisissez ceci sur votre ordinateur local :


cat ~/.ssh/id_rsa.pub

Vous verrez le contenu de la clé, qui devrait ressembler à ceci :


Output

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle
7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G
/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U
/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

Accédez à votre hôte distant en utilisant la méthode dont vous disposez.

Une fois que vous avez accès à votre compte sur le serveur distant, assurez-vous que le répertoire ~/.ssh existe. La commande créera le répertoire si nécessaire, ou ne fera rien s'il existe déjà :

mkdir -p ~/.ssh

Vous pouvez maintenant créer ou modifier le fichier authorized_keys dans ce répertoire. Vous pouvez ajouter le contenu de votre fichier id_rsa.pub à la fin du fichier authorized_keys, en le créant si nécessaire, à l'aide de la commande suivante :


Dans la commande suivante, remplacez `public_key_string` par le résultat de la commande `cat ~/.ssh/id_rsa.pub` exécutée sur votre système local. Ce résultat doit commencer par `ssh-rsa AAAA...`.

echo public_key_string >> ~/.ssh/authorized_keys

Nous pouvons maintenant tenter d'accéder à notre serveur Ubuntu avec une authentification sans mot de passe.

Étape 3 — Authentification auprès du serveur Ubuntu à l'aide de clés SSH

Si vous avez effectué l'une des procédures ci-dessus, vous devriez pouvoir vous connecter à l'hôte distant sans le mot de passe du compte distant.

Le processus de base est le même que la dernière fois que nous l'avons utilisé :

$ ssh username@remote_host

Si c'est la première fois que vous vous connectez à cet hôte (si vous avez utilisé la dernière méthode ci-dessus), vous pourriez voir quelque chose comme ceci :

Output

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Si ce message s'affiche, cela signifie que votre ordinateur local ne reconnaît pas l'hôte distant. Tapez « oui » puis appuyez sur Entrée pour continuer.


Si vous n'avez pas fourni de phrase secrète pour votre clé privée, vous serez connecté immédiatement. Si vous en avez fourni une lors de la création de votre clé privée, vous serez invité à la saisir (notez que vos frappes au clavier ne seront pas affichées dans la session terminal pour des raisons de sécurité). Après l'authentification, une nouvelle session shell s'ouvrira avec le compte configuré sur le serveur Ubuntu.


Si l'authentification par clé a réussi, poursuivez votre lecture pour découvrir comment sécuriser davantage votre système en désactivant l'authentification par mot de passe.


Étape 4 — Désactivez l'authentification par mot de passe sur votre serveur

Si vous avez pu vous connecter à votre compte via SSH sans mot de passe, l'authentification par clé SSH est correctement configurée. Cependant, votre système d'authentification par mot de passe reste actif, ce qui signifie que votre serveur est toujours vulnérable aux attaques par force brute.


Avant de suivre les étapes de cette section, assurez-vous d'avoir configuré l'authentification par clé SSH pour le compte root sur ce serveur, ou de préférence, pour un compte non root disposant des privilèges sudo. Cette étape désactivera les connexions par mot de passe ; il est donc essentiel de vérifier que vous pourrez toujours accéder aux droits d'administrateur.


Une fois que vous avez vérifié que votre compte distant dispose des privilèges d'administrateur, connectez-vous à votre serveur distant à l'aide de clés SSH, soit en tant que root, soit avec un compte disposant des privilèges sudo. Ensuite, ouvrez le fichier de configuration du démon SSH :

sudo nano /etc/ssh/sshd_config

Dans le fichier, recherchez la directive PasswordAuthentication. Elle est peut-être commentée. Décommentez la ligne et définissez sa valeur sur « no ». Cela désactivera la possibilité de se connecter via SSH à l'aide des mots de passe de compte.

/etc/ssh/sshd_config
...
PasswordAuthentication no
...

Une fois terminé, enregistrez et fermez le fichier en appuyant sur CTRL + X, puis sur Y pour confirmer l'enregistrement, et enfin sur ENTRÉE pour quitter nano. Pour que ces modifications soient prises en compte, il est nécessaire de redémarrer le service sshd.


$ sudo systemctl restart ssh

Par précaution, ouvrez une nouvelle fenêtre de terminal et vérifiez que le service SSH fonctionne correctement avant de fermer cette session :

$ ssh username@remote_host

Une fois votre service SSH vérifié, vous pouvez fermer en toute sécurité toutes les sessions serveur en cours.


Le démon SSH de votre serveur Ubuntu ne répond désormais qu'aux clés SSH. L'authentification par mot de passe a été désactivée.


Conclusion


Le tutoriel étant terminé, vous devriez maintenant avoir configuré l'authentification par clé SSH sur votre serveur, ce qui vous permet de vous connecter sans fournir de mot de passe de compte.