Disons que j'ai une clé pour Github, ainsi que d'autres clés. J'ai ajouté beaucoup de clés à mon agent ssh ( ssh-add -L
retourne beaucoup de lignes) sur mon ordinateur personnel A. Dans mon, .ssh/config
j'ai configuré quelle clé utiliser avec quel hôte, par exemple
ssh -T -vvv [email protected] 2>&1 | grep Offering
donne
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
Une seule clé est offerte, comme prévu. Mais ensuite ssh-ing à un hôte B avec ForwardAgent yes
et en répétant la même commande, je reçois
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.linode2
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.helium
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
ce qui signifie qu'il essaie toutes mes clés. Cela est problématique car seul un nombre limité de clés peut être essayé avant le retour des serveurs Too many authentication failures
. J'ai donc essayé de modifier .ssh/config
sur l'hôte B pour inclure
Host github.com
IdentityFile /Users/doxna/.ssh/id_rsa.github
IdentitiesOnly yes
mais je ne reçois aucune offre clé, mais plutôt
debug2: key: /Users/doxna/.ssh/id_rsa.github ((nil))
ce qui, je suppose, signifie que la clé n'a pas été trouvée (?) Et après tout, la clé se trouve sur mon ordinateur personnel A, pas sur l'hôte B, donc la question est de savoir comment s'y référer sur l'hôte B? J'espère que j'ai réussi à expliquer la question.
ssh
sur un fichier de clé publique sans fichier de clé privée associé, il doit simplement lire la clé publique du fichier et demander à l'agent d'utiliser la clé privée correspondante pour générer la signature.Bonne réponse de @Kasperd, mais notez également que si l'hôte B est compromis ou si vous ne faites pas confiance à tous ceux qui ont les privilèges root, vous exposez toujours toutes vos clés à des abus aussi longtemps que vous êtes connecté sur cet hôte.
Une meilleure approche pourrait donc consister à transférer uniquement l'accès aux clés dont vous avez besoin. Essayez peut-être
ssh-agent-filter
qui se trouve dans les référentiels debian / Ubuntu, ou à partir de github .EDIT: J'ai choisi
ssh-ident
plutôt quessh-agent-filter
de transférer des clés de manière sélective, bien que ce ne soit pas une expérience aussi fluide que l'on pourrait l'espérer.la source
SSH_*
variables d'environnement et de vous connecter où vous le souhaitez à l'aide de la clé, même si vous n'en avez jamais eu de copie réelle.