GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de ssh-keygen et partage pour l'authentification par clé sous Linux

Si vous avez déjà travaillé en tant qu'administrateur système (ou si vous souhaitez le faire à l'avenir), vous avez besoin d'une bonne maîtrise de SSH. Je ne vais pas vous expliquer le concept général car il a déjà été haché ici à Enable Sysadmin. Cependant, je veux examiner une meilleure façon de l'utiliser. SSH est le protocole d'accès à distance le plus utilisé au monde. Par conséquent, il est logique que nous essayions d'améliorer son utilisation autant que possible.

J'ai utilisé SSH pour me connecter à distance à des milliers de machines clientes pendant mon temps en tant qu'ingénieur de support, et je suis sûr que d'autres ont vécu une expérience similaire. Avec l'authentification SSH traditionnelle, vous avez besoin du nom d'utilisateur et du mot de passe du compte auquel vous souhaitez vous connecter chaque fois que vous souhaitez accéder à un système. Ça ne sonne pas si mal, non ? Mais que se passe-t-il lorsque vous devez passer régulièrement d'un système à l'autre ? Ou que se passe-t-il si vos responsabilités incluent des sessions à distance sur les mêmes 100 systèmes tout au long de la journée pour des contrôles de santé ? Il existe une autre façon de se connecter, et avec un petit investissement initial, cela peut être beaucoup plus efficace dans l'ensemble.

Durcissement du processus

Il est objectivement vrai qu'une clé cryptée est une cible beaucoup plus difficile qu'un nom d'utilisateur et un mot de passe pour ceux qui ont de mauvaises intentions. Bien que cela puisse demander un peu d'apprentissage, la création et l'utilisation d'une authentification basée sur une clé SSH vaut l'investissement pour chaque administrateur système.

Voici comment cela fonctionne. Vous générez une clé publique et une clé privée correspondante. Le fichier de clé privée agit comme un mot de passe et doit être gardé en sécurité. Cependant, la clé publique est copiée sur les systèmes cibles auxquels vous vous connectez régulièrement. Vous placez la clé publique dans le répertoire d'accueil de votre compte sur le serveur cible. Lorsque vous essayez de vous connecter, les clés sont vérifiées et l'accès est accordé.

Maintenant, vous pouvez le faire de deux manières. L'un est plus pratique et l'autre est un peu fastidieux mais avec une protection supplémentaire pour vous. Le moyen le plus pratique consiste à ne pas spécifier de mot de passe avec la clé privée. Le résultat est que vous n'avez pas à entrer de mot de passe lorsque vous utilisez votre clé privée pour l'authentification. Cela signifie que si quelqu'un met la main sur votre clé privée, il peut également l'utiliser pour s'authentifier. L'autre méthode consiste à protéger votre clé privée par un mot de passe afin que vous soyez invité à entrer le mot de passe lors de l'authentification (pensez à l'authentification à deux facteurs utilisant à la fois la clé privée et le mot de passe).

ssh-keygen sans mot de passe

Pour générer une paire de clés SSH, utilisez la commande suivante :

[user@host ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:veutUNPio3QDCyvkYm1oIx35hmMrHpPKWFdIYu3HV+w [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|   .     .       |
|  o o     o      |
| . = o   o .     |
|  o + = S E .    |
| ..O o + * +     |
|.+% O . + B .    |
|=*oO . . + *     |
|++.     . +.     |
+----[SHA256]-----+ 

Par défaut, vos clés privées et publiques sont enregistrées dans votre ~/.ssh/id_rsa et ~/.ssh/id_rsa.pub fichiers, respectivement.

ssh-keygen avec un mot de passe

La création d'une clé protégée par un mot de passe ressemble à ceci :

[user@host ~]$ ssh-keygen -f .ssh/key-with-password
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in .ssh/key-with-password.
Your public key has been saved in .ssh/key-with-password.pub.
The key fingerprint is:
SHA256:s7GGB7EyHUry4aOcNPKmhNKS7dl1YsMVLvFZJ77VxAo [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    . + =.o ...  |
|     = B XEo o.  |
|  . o O X =....  |
| = = = B = o.    |
|= + * * S .      |
|.+ = o + .       |
|  + .            |
|                 |
|                 |
+----[SHA256]-----+

Utilisez le -f option pour spécifier le fichier où les clés seront enregistrées. Dans l'exemple ci-dessus, les clés privées et publiques sont stockées dans le /home/user/.ssh/key-with-pass et /home/user/.ssh/key-with-pass.pub fichiers, respectivement.

Avertissement

Lors de la génération ultérieure de la paire de clés SSH, si vous ne spécifiez pas de nom de fichier unique, vous êtes invité à écraser le id_rsa existant et id_rsa.pub des dossiers. Si vous écrasez le id_rsa existant et id_rsa.pub fichiers, vous devez alors remplacer l'ancienne clé publique par la nouvelle sur ALL des serveurs SSH qui ont votre ancienne clé publique.

Une fois que vous avez généré les clés, elles sont stockées dans le /user/home/.ssh/ répertoire avec les permissions suivantes :

  • Clé privée - 600
  • Clé publique - 644

Vous n'avez pas encore terminé. Examinons la dernière étape d'une authentification réussie basée sur une clé SSH.

Partager des clés

Pour que tout cela fonctionne, vous devez partager votre clé publique avec les machines distantes sur lesquelles vous essayez de vous connecter en SSH. Utilisez le ssh-copy-id pour copier votre clé publique sur le système de destination. Par défaut, le chemin du fichier est /home/user/.ssh/id_rsa.pub . Vous émettez la commande, spécifiez le fichier que vous partagez, puis l'utilisateur/hôte avec lequel nous le partageons. Cela devrait ressembler à ceci :

[user@host ~] $ ssh-copy-id -i .ssh/key-with-pass.pub user@destination
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.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
user@destination password: changeme
Number of key(s) added: 1

Maintenant que vous avez partagé la clé publique avec l'hôte de destination, vous pouvez vous authentifier auprès du serveur distant en transmettant la clé privée correspondante. Si vous avez spécifié un chemin de fichier pour votre clé privée, vous devez le donner ici. Sinon, la valeur par défaut est /home/_user_/.ssh/id_rsa .

Vu ici :

[user@host ~]$ ssh -i .ssh/key-with-password user@desination 
Enter passphrase for key '.ssh/key-with-password' : password here if you set one
[user@destination ~] $

Avantages et résumé

Les avantages de l'utilisation de l'authentification par clé SSH sont clairs. Des mots de passe sont volés tous les jours, principalement en raison d'erreurs humaines, mais aussi en raison des compétences et de la détermination des attaquants. Une clé cryptée, et plus précisément une clé cryptée protégée par un mot de passe, rend votre authentification SSH encore plus difficile à attaquer. Vous devez toujours trouver un équilibre entre disponibilité et sécurité, mais cela est géré différemment dans chaque environnement.

[ Cours en ligne gratuit :Présentation technique de Red Hat Enterprise Linux. ]


Linux
  1. Conseils Linux pour utiliser cron pour planifier des tâches

  2. Aide-mémoire pour les utilisateurs Linux et les autorisations

  3. Utilisation de GPG pour chiffrer et déchiffrer des fichiers sous Linux [Hands-on for Beginners]

  4. Comment configurer l'authentification basée sur une clé SSH sous Linux

  5. Guide complet d'utilisation d'AsciiDoc sous Linux

Obtenez podman opérationnel sur Windows en utilisant Linux

Conseils pour utiliser la commande top sous Linux

Top 10 des distributions Linux pour ordinateur portable et de bureau

Comment savoir si un utilisateur utilise une authentification SSH basée sur un mot de passe ou une clé sous Linux

Comment configurer l'authentification multifacteur pour SSH sous Linux

Utilisation d'ifstat pour les statistiques réseau Linux