web-dev-qa-db-fra.com

Comment ssh vers un serveur en utilisant un autre serveur?

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?

36
Omid

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.

57
Alexios

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.)

18
Daniel Pittman