Publié sur 28 nov. 2023.
Via SSH, également connu sous le nom de Secure Shell, est un protocole qui permet de gérer des machines en toute sécurité via Internet. C'est le moyen privilégié pour gérer les machines Unix depuis des années et il est disponible depuis peu sous Windows.
Un utilisateur peut simplement se connecter en utilisant son nom d'utilisateur et son mot de passe. Mais il existe aussi une solution plus sûre et plus pratique : l'authentification par clé SSH.
En tant que fournisseur de services gérés, Kinamo est quotidiennement confronté à la gestion de serveurs, qu'il s'agisse de machines internes ou de serveurs en nuage que nous gérons pour nos clients. Le nombre de fois qu'un serveur est connecté est presque impossible à suivre.
Il est donc important de pouvoir le faire en toute sécurité. Ce n'est pas toujours facile, car les serveurs - tout comme une application ou un autre appareil - attendent souvent qu'un nom d'utilisateur et un mot de passe soient introduits.
La transmission de mots de passe, la fourniture de données d'authentification à des clients, à des tiers, etc. est un problème épineux en matière de sécurité et constitue également un maillon faible dans l'ensemble de la chaîne de sécurité.
C'est pourquoi nous souhaitons vous présenter une méthode d'authentification que nous estimons très appréciée sur les serveurs que nous gérons !
Travailler avec une clé SSH présente un certain nombre d'avantages :
Une chose qui présente des avantages a toujours au moins un inconvénient. L'inconvénient est que votre clé SSH privée est stockée sur le disque.
Si quelqu'un s'empare de cette clé, il peut également accéder à toutes les machines auxquelles vous avez accès.
Il est donc fortement recommandé de protéger cette clé privée par un mot de passe. En utilisant une clé avec un mot de passe, vous disposez immédiatement d'une authentification à deux facteurs : votre clé et le mot de passe.
Vous pouvez facilement définir le mot de passe lors de la création de la clé.
C'est génial, mais comment commencer ?
Pour créer des clés SSH, nous utilisons OpenSSH.
OpenSSH est - peut-on dire sans risque - dans la pratique le client SSH par défaut.
OpenSSH a toujours été disponible pour les systèmes d'exploitation Mac OS et Linux et existe depuis peu pour Windows 10 et Windows Server 2019.
Si vous souhaitez utiliser SSH sur un système d'exploitation Windows, vous devez activer la fonctionnalité "OpenSSH Client".
Vous la trouverez sous "Apps > Apps et fonctionnalités > Fonctionnalités optionnelles".
Les utilisateurs de Mac OS et de Linux disposent normalement déjà du client SSH sur leur système. Vous pouvez le tester avec la commande suivante :
ssh -V OpenSSH_9.2p1 Debian-2+deb12u5, OpenSSL 3.0.15 3 Sep 2024
Si OpenSSH est installé sur votre ordinateur, la création de votre propre clé SSH est un processus simple. Vous pouvez le faire à l'aide de la commande ssh-keygen.
Il vous sera demandé où vous souhaitez stocker la clé et quel mot de passe vous souhaitez définir.
Pour choisir l'option par défaut, il vous suffit d'appuyer sur la touche Entrée.
kinamo@debian:/$ ssh-keygen
Generate a public/private rsa key pair.
Enter the file in which you wish to save the key (/home/kinamo/.ssh/id_rsa):
Create directory '/home/kinamo/.ssh'.
Enter the passphrase (empty if no passphrase has been entered):
Enter the same passphrase again:
Your login has been saved in /home/kinamo/.ssh/id_rsa.
Your public key has been saved in /home/kinamo/.ssh/id_rsa.pub.
The key fingerprint is :
SHA256:D7IyqOyoO+G8QbjE5RoCAdhMsTVM5IZPvxRlTMCY/M4 kinamo@debian
The random key image is :
+---[RSA 2048]----+
|=+o*=+.++ |
|..o==..o. |.
|. o.+.. |
|+ o+ ... |
|...o= ..o+ S
|=.o. .E+ o |
|++. o o . |
|++. o |
|B*. |
+----[SHA256]-----+
Après avoir créé les clés, vous pouvez installer la clé publique sur une machine.
Dans la sortie de ssh-keygen, vous verrez "Your public key has been saved in /home/kinamo/.ssh/id_rsa.pub.".
Votre clé publique se trouve donc à cet endroit dans le fichier id_rsa.pub
Ouvrez le fichier à cet endroit avec le bloc-notes ou un autre éditeur de texte.
Il devrait ressembler à ceci :
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+qYhABkyQ39Bjdaw9Uscu5ca+9APZJyIcjz3fJZmhpTe2+AyIg3aj/la0iRrymMBd3l7x3FBmmaXfek52AS/jsRhTRDS5IQ/yNFocKjqDur36jByANFGOLVy6aHV2sXNXkVqF7UX9CgA2sxNIZd4K7qJte8lh5781zdMX3Vsdn0NyvXw30HmZfv79jhtgeEZe7ER6SCAEHJ5oAa3hiqClvU8f4Chy/NpsKmGIcloLBXBpV/nLSTcmw+8Rdk5R2ilO1Dl+6sz38FLTFBjigj++IvleF0W/tclqhFEneen0Jryb9zB43TmeZMAEfbnycCECywKO9/ok8F97urVbdGSFkinamo@debian
La manière la plus simple d'installer votre clé sur une machine est d'utiliser ssh-copy-id.
Ce programme installe votre clé complètement automatiquement.
Vous devez vous connecter au serveur une fois en utilisant votre mot de passe. Dans cet exemple, nous allons installer notre clé sur le serveur remote_server en utilisant la commande ssh-copy-id kinamo@remote_server.
kinamo@debian:/$ ssh-copy-id kinamo@remote_server
/usr/bin/ssh-copy-id : INFO : Source of the key(s) to be installed: "/home/kinamo/.ssh/id_rsa.pub".
Authenticity of host 'remote_server (xx.xx.xx.xx)' cannot be established.
The ECDSA key fingerprint is SHA256:.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue logging in (yes/no)? yes
/usr/bin/ssh-copy-id : INFO : login attempt with new key(s), to filter out those already installed.
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you're asked now, it's to install the new key(s).
kinamo@remote_server password :
kinamo@debian:/$ ssh-copy-id kinamo@remote_server
/usr/bin/ssh-copy-id : INFO : Source of key(s) to be installed: "/home/kinamo/.ssh/id_rsa.pub".
/usr/bin/ssh-copy-id : INFO : connection attempt with new key(s), to filter out those already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you're asked now, it's to install the new key(s)
kinamo@remote_server password :
Number of keys added: 1
Now try connecting to the machine with : "ssh 'kinamo@remote_server'"
and check that only the keys you wanted have been added.
Si ssh-copy-id n'est pas disponible sur votre système (malheureusement, pour les utilisateurs de Windows), vous pouvez également installer la clé manuellement.
Vous vous connectez ensuite au serveur sur lequel vous souhaitez placer votre clé via SSH. via SSH.
Une fois connecté au serveur, créez un nouveau dossier dans le dossier personnel appelé .ssh contenant le fichier authorised_keys.
Ouvrez ce fichier avec un éditeur de texte et placez-y le contenu de votre fichier id_rsa.pub.
ssh kinamo@remote_server
kinamo@remote_server:~$ mkdir ~/.ssh
kinamo@remote_server:~$ vim ~/.ssh/authorized_keys
Une fois la clé installée, vous pouvez vous déconnecter.
Lorsque vous vous reconnectez maintenant, vous ne devez plus introduire votre mot de passe d'utilisateur.
Si vous pouvez vous connecter à l'aide de votre clé SSH, vous pouvez prendre une mesure supplémentaire pour sécuriser votre serveur. Vous pouvez en effet désactiver l'option "se connecter à l'aide d'un mot de passe".
Ainsi, les attaques par force brute sur votre serveur SSH n'ont plus aucune chance. Cela vaut vraiment la peine d'y réfléchir !
Ouvrez la configuration de votre serveur SSH :
vim/etc/ssh/sshd_config
Recherchez l'option PasswordAuthentication.
Par défaut, elle se trouve dans les commentaires et est définie à"yes".
Retirez l'option des commentaires et mettez-la à"no" :
PasswordAuthentication no
Redémarrez maintenant le service SSH :
kinamo@remote_server:~$ sudo systemctl restart ssh
A partir de maintenant, la connexion à votre serveur se fait uniquement via votre clé SSH !