6 votes

Pourquoi SSH utilise toujours la première clé acceptée par le serveur ?

J'ai trois paires de clés SSH qui peuvent être trouvées via ssh-add -L ; deux clés sont acceptées par le serveur distant, mais une seule clé peut être utilisée pour GitHub, et je veux cloner un dépôt GitHub via le transfert d'agent. (les limites d'hébergement empêchent les clés de déploiement de fonctionner) .

  • Les personnes suivantes ne peuvent pas se connecter à GitHub et j'ai constaté que SSH utilise peut-être la première clé [ id_rsa ] répertoriés via ssh-add -L en ignorant mon -i pour que le transfert d'agent ne fonctionne qu'après la suppression de la clé. id_rsa :

    ssh -A -tt -i ~/.ssh/id_rsa_github user@ip 'ssh -T git@github.com'
  • I a essayé en ajoutant IdentityFile y IdentitiesOnly a ~/.ssh/config mais elle a également échoué

Est-ce un comportement normal et comment puis-je forcer SSH à utiliser une clé spécifique ?

3voto

Kamil Maciorowski Points 57004

Je pense que c'est normal. L'agent connaît déjà quelques clés. Alors -i est une option de ssh cela n'affecte pas directement l'agent. Quand on lui demande, ssh peut ajouter une clé à l'agent, mais il n'existe aucun moyen direct de supprimer des clés ou de modifier leur ordre. De plus, l'agent est conçu pour servir de nombreux clients. Certains d'entre eux peuvent avoir besoin des clés que vous voulez "cacher" de cet agent particulier. ssh connexion. Vous avez besoin d'une approche quelque peu différente.

Exécutez le programme local ssh comme un sous-processus d'un dédié agent et laisser ssh ajouter la clé souhaitée à l'agent. De cette façon, la clé sera la seule connue de l'agent concerné. Les processus qui utilisent l'agent général (le cas échéant) ne seront pas affectés.

ssh-agent ssh -A -tt -o AddKeysToAgent=yes -i ~/.ssh/id_rsa_github user@ip 'ssh -T git@github.com'

En man 1 ssh-agent :

command [arg ...]
Si une commande (et des arguments facultatifs) est donnée, elle est exécutée en tant que sous-processus de l'agent. L'agent se termine automatiquement lorsque la commande donnée sur la ligne de commande se termine.

[ ]

[ ] L'agent lance une commande sous laquelle ses variables d'environnement sont exportées [ ].

[ ]

[ ] ssh(1) examine ces variables d'environnement et les utilise pour établir une connexion avec l'agent.

L'agent ne dispose initialement d'aucune clé privée. Les clés sont ajoutées en utilisant ssh-add(1) ou par ssh(1) cuando AddKeysToAgent est fixé dans ssh_config(5) . [ ]

En man 1 ssh :

-o option
Peut être utilisé pour donner des options dans le format utilisé dans le fichier de configuration.

En man 5 ssh_config :

AddKeysToAgent
Indique si les clés doivent être automatiquement ajoutées à un programme en cours d'exécution. ssh-agent(1) . Si cette option est réglée sur yes et une clé est chargée à partir d'un fichier, la clé et sa phrase de passe sont ajoutées à l'agent avec la durée de vie par défaut, comme si par ssh-add(1) .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X