SSH: туннель без оболочки на сервере ssh


63

Я должен установить туннель между двумя хостами.

Для этого я использую sshтаким образом:

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

после этого я захожу в свой SSH_SERVER.

Как я могу избежать этой функции ?! Я должен только настроить туннель. Мне не нужно входить в мой SSH_SERVER ...

Я пробовал опцию -N, но это заставляло мою оболочку работать.


SSH -N -L xx: xx: xx user @ server & <- пробовали ли вы это раньше?
Лоуренс

Эй, ты имеешь право Я пробовал на другом хосте, и опция -N работает. Итак, я обнаружил, что проблема на моем клиенте ssh (я не знаю почему, и я буду искать причину). Большое спасибо!
Бау Мяо

1
man sshпоказано, как: ssh -f -L 1234:localhost:6667 server.example.com sleep 10 && irc -c '#users' -p 1234 pinky 127.0.0.1 Опция -f background ssh и удаленная команда `` sleep 10 '' задаются, чтобы дать время (10 секунд, в примере) для запуска службы, которая должна быть туннелирована. Если в течение указанного времени соединения не установлены, ssh завершит работу. `` `
Лионелло

Ответы:


71

Как сказано в других сообщениях, если вы не хотите получать подсказки на удаленном хосте, вы должны использовать -Nопцию SSH. Но это только позволяет SSH работать без приглашения, а оболочка занята.

Вам просто нужно поставить SSH в качестве фоновой задачи со &знаком:

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

Это запустит SSH туннелирование в фоновом режиме. Но могут появиться некоторые сообщения, особенно когда вы пытаетесь подключиться к не слушающему порту (если ваш сервер apache не запущен). Чтобы эти сообщения не появлялись в вашей оболочке при выполнении других действий, вы можете перенаправить STDOUT / STDERR в большую пустоту:

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

Веселитесь с SSH.


17
Вы также можете использовать опцию ssh -fвместо &перенаправления и io.
tkrennwa

49

-f -N это то, что вы ищете:

ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

3
Как только туннель настроен, как вы закрываете его этим методом?
magnetik

@magnetik Найдите процесс с psи killэто
neu242

13
@magnetik и @ neu242 лучше использовать «мастер-сокет», ssh -N -f -M -S /tmp/file-sock -L port:server:port_to user@...чтобы потом можно было уничтожить соединение ssh -S /tmp/file -o exit user@....(или убить). Таким образом, не нужно PS. Вы можете автоматически создать этот файл в ~ / .ssh / config.
Metal3d

1
Я имею в виду «управляющий разъем», а не «главный разъем»
Metal3d

8
Должно быть ssh -S /tmp/file-sock -O exit, не -o en.wikibooks.org/wiki/OpenSSH/Cookbook/…
fetsh
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.