Мой настольный домашний компьютер (см. Изображение ниже) подключается через SSH к Office Server (конечно, через Интернет).

Я подключаюсь к этому серверу со своего домашнего рабочего стола (под управлением Linux) с помощью клиента OpenSSH из Linux (обратите внимание на ключ -g для "шлюза"):

ssh MyUser@OfficePublicIP -L 22222:172.26.0.10:22 -g

Итак, когда соединение установлено, у меня работает туннель SSH к серверу для моей локальной сети:

luis@HomeDesktop:~$ netstat -ano | grep "22222" -i
tcp        0      0 0.0.0.0:22222           0.0.0.0:*               LISTEN      off (0.00/0/0)

И теперь я могу перейти на свой домашний ноутбук и открыть сессию SSH на офисном сервере через домашний рабочий стол (под управлением Windows), используя PuTTY, выполнив:

PuTTY 192.168.0.101 -P 22222

Процесс показан на этой схеме (следуйте стрелкам черной линии):

Домашний рабочий стол выступает в роли шлюза к Office Server для моего домашнего ноутбука

Проблема в том, что мне нужно запускать Windows на своем домашнем компьютере, а не Linux. И я, конечно же, предпочитаю использовать SSH-клиент Putty (мне нравится его конфигурируемость терминала).

Но у Putty v0.63, по-видимому, нет опции -g (gateway), которая позволяет внешним соединениям перенаправлять (туннелировать) порты.

Я провел исследование с помощью файла .chm справки putty, но ни Putty, ни связанный с ним инструмент PLink, похоже, не имеют этой опции.

Кто-нибудь знает, как туннелировать соединения с офисным сервером с моего домашнего рабочего стола, но продолжать использовать PuTTY?

2 ответа2

0

Ну ... на самом деле, если вам нужно только аккуратное окно PuTTY для записи в удаленном сеансе SSH, вы можете использовать его только для этого и установить туннель, используя (одновременно в другой консоли) любой другой клиентский порт SSH из Linux в Windows.

Например, клиент OpenSSH от CygWin должен работать нормально:

$ ssh -V
OpenSSH_6.6p1, OpenSSL 1.0.1f 6 Jan 2014

$ ssh
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port]
           [-Q cipher | cipher-auth | mac | kex | key]
           [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]

Кстати, синтаксис тот же, который вы используете, когда используете Linux на своем домашнем компьютере.

ssh MyUser@OfficePublicIP -L 22222:172.26.0.10:22 -g
0

Вы можете пропатчить / смоделировать опцию шлюза , одновременно запустив на своем домашнем рабочем столе простой перенаправитель портов в другом порту.

Например, я часто использую Port Forwarding для Windows (я предпочитаю "старую утилиту командной строки", поэтому я могу автоматизировать ее с помощью сценариев). В вашем случае, скажем, 11111TCP будет "переходным" портом:

c:\>trivial_portforward.exe 11111 127.0.0.1 22222

Убедитесь, что оба порта прослушивают, выполнив (на домашнем рабочем столе):

c:\>netstat -ano | grep "11111" -i
TCP    0.0.0.0:11111          0.0.0.0:0              LISTENING       6724

netstat -ano | grep "22222" -i
TCP    127.0.0.1:22222        0.0.0.0:0              LISTENING       6028

А теперь вы можете сделать со своего ноутбука:

c:\>PuTTY 192.168.0.101 -P 11111

Соединение SSH должно быть успешным. В то же время вы должны увидеть на консоли trivial_portforward подтверждение:

received connection from 192.168.0.102
connection to 127.0.0.1:22222 established

ПРИМЕЧАНИЕ. Вы должны использовать 127.0.0.1 вместо localhost (помните, что ваша проблема в том, что с PuTTY нет перенаправления, кроме 127.0.0.1).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .