Назад | Перейти на главную страницу

Перенаправление портов SSH с помощью главного канала

Я пытаюсь настроить обратный порт вперед по существующему главному каналу, но, похоже, он не работает, и я не уверен, почему. Я настроил мастер-канал так:

ssh -MN -oControlPath=/tmp/mycontrolpath hostname

и я пытаюсь открыть обратный порт вперед вот так:

ssh -oControlPath=/tmp/mycontrolpath -NR 10017:127.0.0.1:10017 hostname

но этот второй процесс не срабатывает с выходом

stdin: is not a tty

и на удаленном хосте не открыт переадресация портов. это кажется чтобы быть поддерживаемой функцией протокола (во всяком случае согласно RFC), но я не могу быстро ее использовать. У кого-нибудь это работает?

Версия клиента SSH - OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 марта 2009 г., подключение к OpenSSH_5.5p1 Debian-6, OpenSSL 0.9.8o 01 июня 2010 г. на сервере.

ОБНОВИТЬ

Выполнение команды port-forward с -vvvv дает следующий результат:

OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /home/regularfry/.ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug3: ssh_msg_send: type 2
debug3: ssh_msg_recv entering
debug3: ssh_msg_send: type 2
debug3: ssh_msg_recv entering
stdin: is not a tty

Соответствующий раздел соответствующего вывода процесса главного сокета выглядит так:

debug3: fd 5 is not O_NONBLOCK
debug3: ssh_msg_recv entering
debug3: ssh_msg_send: type 2
debug3: ssh_msg_recv entering
debug3: muxserver_accept_control: receiving 2 env vars
debug2: muxserver_accept_control: accepted tty 0, subsys 0, cmd
debug2: muxserver_accept_control: got fds stdin 6, stdout 7, stderr 8
debug3: ssh_msg_send: type 2
debug2: fd 5 setting O_NONBLOCK
debug1: channel 0: new [client-session]
debug3: muxserver_accept_control: channel_new: 0
debug2: channel 0: send open
debug3: Wrote 64 bytes for a total of 2679
debug2: callback start
debug2: client_session2_setup: id 0
debug1: Sending environment.
debug1: Sending env LANG = en_GB.UTF-8
debug2: channel 0: request env confirm 0
debug1: Sending env LC_CTYPE = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug2: channel 0: request shell confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug3: Wrote 192 bytes for a total of 2871
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
debug2: channel 0: rcvd ext data 20
debug2: channel 0: written 20 to efd 8

Ваш точный пример отлично работает с сервером OpenSSH_5.5p1 Debian-4 и клиент OpenSSH_5.8p1 Debian-4. Поэтому я предлагаю обновить ваш клиент, если это возможно.

Изменить: он также работает с реверсированием клиента и сервера (я фактически создал цикл перенаправления таким образом), поэтому на клиенте может быть достаточно подняться до 5.5p1.