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 (я не знаю чому, і я шукатиму причину). Дуже дякую!
Bau Miao

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 фонів ssh та віддаленої команди `` sleep 10 '' задаються, щоб дозволити кількість часу (10 секунд у прикладі) для запуску послуги, яку потрібно тунелювати. Якщо підключення не встановлено протягом зазначеного часу, ssh вийде. `` `
Ліонелло

Відповіді:


71

Як сказано в інших публікаціях, якщо ви не хочете підказувати на віддаленому хості, ви повинні використовувати -Nопцію SSH. Але це просто продовжує працювати SSH, не маючи підказки, а оболонка зайнята.

Вам просто потрібно поставити SSH'ing як фонове завдання зі &знаком:

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 Знайдіть процес з psі killце
neu242

13
@magnetik і @ neu242, тим краще використовувати "master socket", 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.