Reverse ssh-agent forwarding. Utilisation d'une touche ssh distante

J'ai une key privée ssh de github.com dans un ssh-agent sur un server de keys. De mon ordinateur personnel derrière NAT Je veux exécuter git pull et utiliser ma key github ssh.

La seule façon dont je sais de le faire est de ssh dans le server de key et de transférer le port 22, puis ssh de nouveau dans mon ordinateur personnel pendant le transfert de l'agent, puis exécutez git pull dans ce nouvel shell de la manière suivante:

 home$ ssh keyserver -R10022:localhost:22 keyserver$ ssh -A localhost -p10022 home$ git pull 

Existe-t-il un moyen plus simple d'utiliser la key ssh de la télécommand?

J'ai utilisé deux approches différentes dans des scénarios semblables à ceux de la vôtre.

  1. Démarrer un agent localement
  2. Transférer vers le server
  3. Utilisez ssh-add pour append la key du server à votre agent local (opinalement avec une durée de vie limitée)
  4. Se déconnecter du server
  5. Utilisez la key de l'agent local autant de fois que vous le souhaitez

Ou

  1. Démarrer un agent localement
  2. Serveur ssh server keyfile | ssh-add / dev / stdin

Si le server est configuré de manière à ne pas laisser votre key quitter le server, aucune des methods ci-dessus ne fonctionnera. Dans ce cas, il n'y a pas de solution, plus simple que votre propre approche. Mais il existe des alternatives, qui peuvent offrir une meilleure expérience et / ou security de l'user.

Cette command ouvrirait la même paire de connections ssh que vous avez utilisées dans votre propre exemple. Mais revenez ensuite au shell d'initiation où vous pouvez utiliser l'agent renvoyé.

 export $(grep -m1 ^SSH_AUTH_SOCK= <( ssh -n -R10022:localhost:22 keyserver ssh -A localhost -p10022 "'env ; sleep 99999'"))