Salta al contenuto principale
Lympha technologies

Guide pratiche

Accéder en toute sécurité à un VPS via SSH depuis Linux ou macOS

Accès SSH sécurisé à un VPS depuis Linux ou macOS : comment fonctionne l'authentification par clés (publique et privée), la génération avec ssh-keygen, la copie sur le serveur avec ssh-copy-id et la passphrase optionnelle — avec la sortie réelle de …

Dans le cadre du processus de sécurisation de votre VPS (voir l'article « Comment sécuriser un VPS sous Ubuntu Linux »), l'accès SSH par nom d'utilisateur et mot de passe peut constituer un point critique pour la sécurité. On a tendance à utiliser des mots de passe faciles à mémoriser (même s'ils contiennent des caractères spéciaux, par exemple Ci@oM0nd0) : cela peut vous exposer à des tentatives d'accès de la part d'utilisateurs malveillants — en utilisant la technique de la force brute, il est en effet possible de trouver votre mot de passe.

Cette technique d'attaque consiste essentiellement à tenter de se connecter au serveur à l'aide d'une base de données de mots de passe connus, jusqu'à trouver le bon. Si vous avez suivi le guide indiqué au début de cet article, vous avez déjà configuré un utilisateur sans privilèges pouvant utiliser sudo et installé Fail2ban pour tenir à distance les tentatives d'accès indésirables. Avec les étapes suivantes, nous allons renforcer encore la sécurité du VPS.

Prérequis

  1. Un VPS avec un système d'exploitation Linux
  2. Un utilisateur doté de privilèges adéquats, c'est-à-dire sudo (dans cet exemple, il s'appelle utente_vps)
  3. Votre ordinateur doit fonctionner sous macOS ou une distribution basée sur Linux
  4. L'application ssh-keygen, normalement présente sous Linux et macOS
  5. L'application ssh-copy-id, normalement présente sous Linux et macOS

Dans ce guide, nous verrons comment créer la paire de clés SSH à l'aide de ssh-keygen, qui fait partie d'OpenSSH.

Comment fonctionne l'accès par clés SSH

Avant de commencer, un mot sur le fonctionnement. Une paire de clés SSH est constituée, précisément, de deux clés cryptographiques, une publique et une privée, utilisées pour authentifier un client auprès d'un serveur SSH. La clé privée est conservée par le client et doit être gardée en lieu sûr et non divulguée : si elle est compromise, perdue ou volée, elle permettra à quiconque la possède d'accéder au serveur. La clé publique correspondante peut être partagée sans aucune conséquence, et elle est normalement chargée sur le serveur auquel on souhaite accéder. C'est elle, en effet, qui sert à chiffrer les « messages » que seule la clé privée peut déchiffrer.

Dans une configuration standard, la clé publique est ajoutée au fichier authorized_keys présent dans le dossier ~/.ssh/ de chaque utilisateur autorisé. Lorsqu'un client tente de se connecter en SSH au serveur, le service vérifie si l'utilisateur possède la clé privée : en cas de succès, l'accès est accordé.

Étape 1 — Création des clés avec ssh-keygen

  1. Ouvrez l'application Terminal
  2. Saisissez la commande :
    $ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/tuo_utente_macos/.ssh/id_rsa):
    ou bien, si vous êtes sous Linux :
    Enter file in which to save the key (/home/tuo_utente_linux/.ssh/id_rsa):
    Il vous sera demandé où enregistrer la paire de clés : vous pouvez conserver le chemin proposé ou en choisir un autre. Si une paire de clés existe déjà, le message suivant apparaîtra :
    /Users/tuo_utente_macos/.ssh/id_rsa already exists.
    Overwrite (y/n)?
    Dans ce cas, c'est à vous de décider si vous souhaitez les écraser ou interrompre la procédure et la répéter en changeant le chemin d'enregistrement des nouvelles clés.
  3. Pour plus de sécurité, vous pouvez également définir une passphrase, que vous devrez saisir chaque fois que vous utiliserez les clés. C'est à vous de décider : si vous appuyez sur ENTRÉE sans rien écrire, aucun mot de passe ne vous sera demandé.

Nous avons désormais créé la paire de clés, enregistrée à l'emplacement indiqué au début de la procédure (normalement le répertoire caché .ssh à l'intérieur de votre profil utilisateur) : dans l'exemple, vous les trouverez dans /Users/tuo_utente_macos/.ssh/ ou /home/tuo_utente_linux/.ssh/. Le dossier contient deux fichiers, id_rsa et id_rsa.pub : comme son nom l'indique, id_rsa.pub est la clé publique, qui devra être chargée sur votre VPS, tandis que id_rsa est la clé privée et ne devra absolument pas être partagée.

Étape 2 — Copions la clé sur le VPS

Procédons à la copie de la clé publique sur le VPS. Ici, la commande ssh-copy-id nous vient en aide : depuis l'application Terminal de votre macOS ou Linux, saisissez :

$ ssh-copy-id Nome_Utente@IPv4_del_VPS
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/tuo_utente_macos/.ssh/id_rsa.pub"
/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
Nome_Utente@IPv4_del_VPS's password:

Dans tous les cas, vous devez saisir le mot de passe de votre utilisateur sur le VPS pour confirmer la copie.

Number of key(s) added:        1
Now try logging into the machine, with:   "ssh 'Nome_Utente@IPv4_del_VPS'"
and check to make sure that only the key(s) you wanted were added.

Si tout a été fait correctement, en vous connectant maintenant en SSH au VPS avec l'utilisateur sans privilèges, vous accéderez directement à la console distante sans que le mot de passe vous soit demandé — sauf si vous avez défini une passphrase lors de la création des clés : dans ce cas, vous n'utiliserez pas le mot de passe de votre utilisateur sur le VPS, mais la passphrase que vous avez choisie.

Conclusions

Vous pouvez désormais accéder à votre VPS avec un supplément de sécurité. Il reste une précaution que vous pouvez mettre en place : maintenant que les clés fonctionnent, vous pouvez désactiver complètement l'accès par mot de passe au service SSH.

Guide publié initialement sur le blog de VPS GREEN, le service VPS sur notre cloud privé green.

Partager cet article

LinkedIn X Email

Rédaction Lympha

Les articles de ce blog naissent de l'expérience de terrain de nos Business Units et Centres de compétences : ceux qui écrivent sont ceux qui conçoivent, exploitent et supportent chaque jour les systèmes dont nous parlons. Les contenus ont une vocation informative et reflètent l'état de l'art à la date de publication.

Cela pourrait aussi vous intéresser