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

SSH-туннель для удаленного рабочего стола через промежуточный сервер

Я видел много примеров SSH-туннелей в сетях, но мне все еще не везет с этим. Вот установка:

  1. ПК с Windows 7 в частной сети, за брандмауэром, с SSH-сервером PowerShellInsider настроен и работает нормально.
  2. Сервер Linux общего доступа, имеющий доступ к ПК.
  3. Ноутбук с Windows 7 дома, с которого я хочу делать удаленный рабочий стол на ПК.

Вот что я пробовал до сих пор:

  1. SSH-туннель от моего ноутбука к серверу Linux: ssh -f my_user @ LINUX_SERVER -L 6666: LINUX_SERVER_IP: 6666 -N
  2. SSH к серверу Linux, на котором я настроил туннель к ПК: ssh -f 'PRIVATE_DOMAIN \ my_user' @ PC_NAME -L 6666: PC_IP: 3389 -N

К сожалению, я, должно быть, делаю что-то не так, потому что это не работает. Есть идеи, почему или, по крайней мере, какие-либо предложения о том, как я могу попытаться отладить эту настройку? На данный момент у меня есть доступ ко всем 3 машинам (без root в Linux), поэтому я могу протестировать все, что захочу ...

Вот что я делаю, когда у меня очень похожая проблема (но у меня Linux через Linux, и я использую порт 5901 для VNC):

Во-первых, делаем так, чтобы все подключения к localhost:13389 на вашем ноуте перейдет на промежуточный сервер (на порт 3389):

laptop$ ssh -L 13389:localhost:3389 my_user@LINUX_SERVER_IP

Затем мы делаем так, чтобы все подключения к localhost:3389 на промежуточном сервере перенаправляются на ПК за межсетевым экраном (на порт 3389):

my_user@LINUX_SERVER_IP$ ssh -L 3389:localhost:3389 'PRIVATE_DOMAIN\my_user'@PC_NAME

(обратите внимание, что эта команда выполняется внутри интерактивной оболочки на промежуточном сервере.)

Теперь у вас должна быть возможность подключиться к localhost:13389 и доступ к порту 3389 на удаленном ПК.

Отладка

Поскольку он не работает, мы можем попробовать несколько вещей. Мы сделаем так, чтобы определить причину проблемы:

  1. На удаленном ПК, к которому вы хотите получить доступ, можете ли вы telnet localhost 3389 чтобы убедиться, что он открыт и готов к подключению? У Microsoft есть хороший статья в теме
  2. Если это сработает, можете попробовать выполнить telnet localhost 3389 на промежуточный сервер чтобы проверить правильность пересылки на удаленный компьютер?
  3. В заключение, telnet localhost 13389 на вашем ноутбуке, чтобы проверить, полностью ли он пересылается.

Как только вы столкнетесь с ошибкой, остановитесь и добавьте комментарий, чтобы мы разобрались.

Я думаю, что вы используете неправильный синтаксис с ssh команда.

Поскольку у вас есть SSH-сервер PowerShellInsider, работающий на машине с Windows 7, я предполагаю, что вы хотите подключиться к SSH-серверу через туннель, верно?

В любом случае, если предположить, что SSH-сервер работает на стандартном порту, команда для запуска на вашем домашнем компьютере должна быть примерно такой:

$ ssh -N -L 22222:ip-address-windows7-at-work:22 user@linux-server

Затем подключитесь по ssh к удаленной Windows 7, используя локальный сокет (22222):

$ ssh localhost:22222

Если вы пытаетесь туннелировать протокол удаленного рабочего стола, вам нужно только изменить «правильный» номер порта:

$ ssh -N -L 22222:ip_address_windows7_work:3389 user@linux-server