SSH: tunnel sans shell sur le serveur ssh

63

Je dois mettre en place un tunnel entre deux hôtes.

Pour cela j'utilise sshde cette façon:

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

après cela, je me connecte à mon SSH_SERVER.

Comment puis-je éviter cette fonctionnalité?! Je n'ai qu'à mettre en place un tunnel. Je n'ai pas besoin de me connecter à mon SSH_SERVER ...

J'ai essayé l'option -N, mais cela a occupé mon shell.

Bau Miao
la source
SSH -N -L xx: xx: xx utilisateur @ serveur & <- l'avez-vous déjà essayé?
Lawrence
Hé, tu as raison. J'ai essayé sur un autre hôte et l'option -N fonctionne. J'ai donc découvert que le problème se trouvait sur mon client ssh (je ne sais pas pourquoi et je vais chercher la raison). Merci beaucoup!
Bau Miao
1
man sshmontre comment: ssh -f -L 1234:localhost:6667 server.example.com sleep 10 && irc -c '#users' -p 1234 pinky 127.0.0.1 L'option -f backgrounds ssh et la commande distante `` sleep 10 '' sont spécifiés pour permettre un délai (10 secondes, dans l'exemple) pour démarrer le service à tunnelliser. Si aucune connexion n’est établie dans le délai spécifié, ssh se ferme. `` `
lionello

Réponses:

71

Comme indiqué dans d'autres publications, si vous ne voulez pas d'invite sur l'hôte distant, vous devez utiliser l' -Noption SSH. Mais cela ne fait que maintenir SSH en cours d'exécution sans invite et que le shell est occupé.

Il vous suffit de mettre le SSH'ing en tâche de fond avec le &signe:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server &

Cela lancera le tunnelage SSH en arrière-plan. Mais certains messages peuvent apparaître, notamment lorsque vous essayez de vous connecter à un port non-écouteur (si votre serveur Apache n'est pas lancé). Pour éviter que ces messages apparaissent dans votre shell tout en effectuant d'autres tâches, vous pouvez rediriger STDOUT / STDERR vers le grand vide:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server >/dev/null 2>&1 & 

Amusez-vous avec SSH.

Adrien M.
la source
17
Vous pouvez également utiliser l'option ssh -fau lieu de la &redirection io.
Tkrennwa
49

-f -N est ce que vous recherchez:

ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER
neu242
la source
3
Une fois le tunnel installé, comment le ferme-t-on avec cette méthode?
magnetik
@magnetik Trouvez le processus avec pset killça
neu242
13
@magnetik et @ neu242, mieux vaut utiliser "master socket" ssh -N -f -M -S /tmp/file-sock -L port:server:port_to user@...pour pouvoir tuer la connexion plus tard avec ssh -S /tmp/file -o exit user@....(ou tuer). De cette façon, pas besoin de ps. Vous pouvez dire de créer automatiquement ce fichier dans ~ / .ssh / config.
Metal3d
1
Je veux dire "prise de contrôle" et non pas "prise de maître"
Metal3d
8
Cela devrait être ssh -S /tmp/file-sock -O exit, pas -o en.wikibooks.org/wiki/OpenSSH/Cookbook/…
fetsh