Duplicata possible:
ssh via plusieurs hôtes
Pour me connecter à serveur B je dois d'abord ssh à serveur A. Quelle est la ligne de commande pour accéder à serveur B?
Si le serveur B est accessible via ssh
et que vous avez seulement besoin de ssh
(pas directement scp
ou sftp
), cela fonctionne également très bien:
ssh -t $SERVER_A ssh $SERVER_B
L'option -t
Force l'allocation d'un pseudo-tty même lors de l'exécution d'une seule commande à l'autre extrémité. C'est utile, car ssh
a besoin d'un pseudo-tty.
Puisque vous utilisez deux instances imbriquées de ssh
, le caractère d'échappement dans la session interne est Enter~~ (deux tildes). Un tilde enverra l'évasion au premier Shell.
Il n'y a pas de méthode intégrée dans ssh
pour ce faire, à part utiliser la redirection de port.
Cependant, il existe un moyen qui fonctionne assez bien - le paramètre ProxyCommand
pour ssh. Vous pouvez spécifier cela sur une base par hôte dans ~/.ssh/config
Et l'utiliser pour spécifier la commande à exécuter pour se connecter au port ssh distant.
J'utilise ceci sur plusieurs hôtes:
Host serverB.example.com serverB
ProxyCommand /usr/bin/ssh serverA.example.com /usr/bin/nc %h %p
Consultez la page de manuel ssh(1)
pour plus de détails et nc(1)
du package netcat
pour la commande que j'utilise pour transmettre la connexion. (Vous pouvez utiliser tout ce qui crée une connexion TCP et passe par l'entrée et la sortie standard, cependant.)