Plusieurs clés publiques pour un utilisateur

55

Cette question est similaire à l'authentification par clé publique SSH: une clé publique peut-elle être utilisée pour plusieurs utilisateurs? mais c'est l'inverse.

J'essaie d'utiliser ssh pour que tout serveur ssh fonctionne pour vos réponses.

Puis-je avoir plusieurs clés publiques associées au même utilisateur? Quels sont les avantages de le faire? En outre, différents répertoires de départ peuvent-ils être définis pour différentes clés utilisées (toutes reliées au même utilisateur)?

S'il vous plaît laissez-moi savoir si je ne suis pas clair.

Merci.

Russell
la source

Réponses:

80

Vous pouvez avoir autant de clés que vous désirez. Il est de bonne pratique d'utiliser des ensembles de clés privées / publiques distincts pour des royaumes différents, par exemple un pour votre usage personnel, un pour votre travail, etc.

Commencez par générer deux paires de clés distinctes, une pour la maison et une pour le travail:

ssh-keygen -t rsa -f ~/.ssh/id_rsa.home
ssh-keygen -t rsa -f ~/.ssh/id_rsa.work

Ensuite, ajoutez une entrée à votre ~/.ssh/configfichier pour choisir la clé à utiliser en fonction du serveur auquel vous vous connectez:

Host home
Hostname home.example.com
IdentityFile ~/.ssh/id_rsa.home
User <your home acct>

Host work
Hostname work.example.com
IdentityFile ~/.ssh/id_rsa.work
User <your work acct>

Ensuite, ajoutez le contenu de votre id_rsa.work.pubdans ~/.ssh/authorized_keyssur la machine de travail et faites de même pour la clé de la maison sur votre machine à la maison.

Ensuite, lorsque vous vous connectez au serveur domestique, vous utilisez l'une des clés et le serveur de travail, vous en utilisez une autre.

Notez que vous souhaiterez probablement ajouter les deux clés à votre clavier pour ssh-agentne pas avoir à taper votre phrase secrète tout le temps.

Phil Hollenback
la source
Cela fonctionnerait même si id_rsa.work.pub et id_rsa.home.pub étaient plantés sur le même serveur, n'est-ce pas? La raison en est que je me connecte peut-être à un serveur à partir d’ordinateurs différents. Par conséquent, je me demande s’il est logique d’avoir des paires de clés différentes pour chaque ordinateur, même s’ils se connectent au serveur avec le même utilisateur. Merci.
Russell
2
Absolument! Sur le serveur, ssh vérifiera toutes les clés publiques du fichier allowed_keys jusqu’à ce qu’il trouve une correspondance. Ainsi, vous pouvez mettre toutes les clés dans le même fichier allowed_keys sur le serveur sans problème.
Phil Hollenback
@PhilHollenback "ssh vérifiera toutes les clés publiques du fichier allowed_keys jusqu'à ce qu'il trouve une correspondance" - vous voulez dire qu'il continue d'envoyer des défis au client pour chaque clé publique jusqu'à ce que le client prouve qu'il peut en déchiffrer une? Avez-vous des références pour cela? (vraiment intéressé)
aaa90210
5

Il est logique de disposer des clés de plusieurs utilisateurs pour un utilisateur. Les raisons communes sont:

  • sauvegarde
  • git (par exemple Push URL: git+ssh://git@git-server/~/repos/MyProject)
  • rsync
  • accès commun à une application

En ce qui concerne différents répertoires, vous pouvez les modifier par clé en ajoutant le numéro de clé de user1 environment="HOME=/home/user1"dans le fichier allowed_keys . Voir man authorized_keys.

Essayez, YMMV.

MikeyB
la source