La réponse de Snowball a beaucoup aidé. Cependant, j'ai apporté quelques modifications à la commande et je voulais expliquer comment elle fonctionne. Étant donné cette situation :
ssh ssh
A -------> B -------> C
^ ^
using A's using B's
ssh key ssh key
Modifiez votre ~/.ssh/config
et ajoutez l'hôte B
à travers lequel vous voulez sauter, tout comme vous configureriez normalement un hôte :
Host B
User myusername
HostName b.mycompany.com
Ensuite, vous ajoutez l'hôte C
sur lequel vous voulez vous retrouver :
Host C
User myusername
HostName c.intranet.mycompany.com
ProxyCommand ssh -T -q -o 'ForwardAgent yes' B 'ssh-add -t 1 && nc %h %p'
Notez le ProxyCommand
où :
-
ssh -T -q
indique qu'il ne doit pas allouer un pseudo-TTY ( -T
) et se taire ( -q
) ;
- une fois sur l'hôte de saut
B
nous ajoutons la clé aux clés SSH de A
par le biais de ssh-add
;
- ce qui ne fonctionne que parce que nous avons fait suivre l'agent SSH en utilisant
-o 'ForwardAgent yes'
.
-
ssh-add -t 1
indique que je veux que la clé ne soit ajoutée que pendant la 1 seconde nécessaire à l'authentification auprès de l'hôte final C ;
- et enfin,
nc %h %p
initie un netcat
connexion à l'hôte final %h
au port %p
(ces deux champs seront remplis par SSH sur la base des informations contenues dans le formulaire ~/.ssh/config
).
Si vous devez spécifier une clé personnalisée sur B
à utiliser, vous pouvez le faire en modifiant l'option ssh-add
partie :
Host C
User myusername
HostName c.intranet.mycompany.com
ProxyCommand ssh -T -q -o 'ForwardAgent yes' B 'ssh-add -t 1 ~/.ssh/mykey && nc %h %p'