Вопрос или проблема
Я могу подключиться к моей частной рабочей сети, используя Putty с следующими настройками:
- Имя хоста: login.example.com
- Порт: 502
- Переадресованные порты SSH: D8888
Это открывает SSH socks-прокси, который позволяет мне получить доступ к внутренним серверам. Я снова использую Putty для подключения к внутреннему серверу Ubuntu, используя вышеуказанный socks-прокси.
Теперь я хочу получить GUI сервера, используя VNC, но не могу подключиться с использованием socks-прокси. Я пытался перенаправить порты, но так как я новичок в этом, возможно, сделал что-то неправильно. Как я могу запустить VNC с моего компьютера с Windows, чтобы получить доступ к удаленному VNC серверу?
Эта статья не помогла мне подключиться, используя vncserver
. RDP также не работает. Сеанс VNC находится на другом сервере, доступном только от login.example.com в качестве socks-прокси.
Примечание: я могу SSH в внутренние серверы, используя указанную выше конфигурацию с login.example.com в качестве socks-прокси в Putty.
Если вы используете RealVNC viewer, как показано в статье, на которую вы сослались, то вы должны иметь возможность выполнить следующие действия:
- Используйте PuTTY для подключения к
login.abc.com
и настройте переадресациюD8888
(как вы уже делали). - Запустите RealVNC viewer и нажмите кнопку
Options...
. - Выберите вкладку
Connection
. - Нажмите радио-кнопку
Use these proxy settings
. - Установите
Proxy type
наSOCKS 5
. - Установите
Proxy address and port
наlocalhost:8888
. - Теперь попробуйте подключиться к реальному VNC серверу, например,
vnc-server.abc.com:1
. Не используйтеlocalhost:1
, так как вы должны идти через SOCKS-прокси.
Большинство VNC клиентов не поддерживают SOCKS-прокси, поэтому не могут использовать динамическое перенаправление портов (D в D8888). Вы можете перенаправить локальный порт на конкретную машину+порт вместо этого, но это будет означать одно такое локальное отображение порта на каждую удаленную систему, к которой вы хотите подключиться через VNC. (Это описано в статье, на которую вы сослались – она показывает такое отображение на localhost на другом конце SSH туннеля). Затем вы подключаетесь к перенаправленному порту на вашем локальном компьютере, и SSH туннелирует его для вас на конкретный удаленный адрес:порт.
Переадресованные порты: L8889 x.x.x.x:5900 (x.x.x.x – адрес машины, к которой вы хотите подключиться через VNC)
Некоторые VNC клиенты поддерживают SOCKS-прокси, но это, как правило, платные/профессиональные версии.
Ни одна из бесплатных альтернатив VNC не поддерживала корректно каких-либо видов прокси, поэтому я предложил альтернативу, но она требует возможности как-то добраться до конечной машины через ssh (по желанию, используя опцию -J несколько раз для перехода через некоторые промежуточные узлы).
Что вам нужно сделать, это подключиться к серверу, на котором вы хотите получить доступ к VNC через ssh, включив параметр переадресации X11 (-X).
Для этого вам нужна поддержка X на клиентской машине: если ваш клиент – компьютер с Windows, возможно, лучший вариант – запустить X410 из WSL или использовать что-то вроде MobaXTerm, который будет поддерживать X примитивы, позволяя корректно переадресовать linux GUI на ваш компьютер с Windows.
Как только вы подключены через ssh с переадресацией X, запустите vncviewer, указывая на localhost.
.
Ответ или решение
Для решения проблемы подключения к VNC через socks-прокси SSH туннель, необходимо совершить ряд шагов. Давайте разберемся с вашим текущим рабочим подходом и предложим корректировку, которая позволит успешно подключиться к VNC серверу.
Текущее состояние
Вы используете PuTTY для подключения к вашему рабочему серверу с доменным именем login.example.com
и портом 502. SSH туннель настроен с динамическим переадресацией портов на D8888
, что позволяет вам использовать socks-прокси для доступа к внутренним серверам. Однако, попытки подключиться к VNC серверу через такой прокси не увенчались успехом.
Проблема
Основная проблема заключается в том, что большинство VNC клиентов не поддерживают работу через socks-прокси напрямую. Это требует использования прямого туннелирования портов.
Решение
Чтобы получить доступ к VNC серверу, выполните следующие шаги:
-
Настройка прямого портового туннелирования в PuTTY:
- Запустите PuTTY и подключитесь к
login.example.com
с вашими стандартными настройками. - Перед установлением соединения, перейдите к разделу "Connection" -> "SSH" -> "Tunnels".
- В разделе "Add new forwarded port" настройте переадресацию портов следующим образом:
- Source Port: Укажите, например,
8889
. Это локальный порт на вашем компьютере. - Destination: Укажите IP адрес внутреннего сервера, к которому вы хотите подключиться, и порт VNC (например,
x.x.x.x:5900
). - Убедитесь, что выбрана опция
Local
и нажмите "Add", чтобы добавить правило.
- Source Port: Укажите, например,
- Подключитесь к серверу.
- Запустите PuTTY и подключитесь к
-
Подключение к VNC через локальный туннель:
- Установите и запустите ваш VNC-клиент на Windows.
- Введите в адресной строке VNC клиент
localhost:8889
. Здесь8889
— это ранее указанный в PuTTY локальный порт.
-
Альтернативный подход через X11 Forwarding:
- Если VNC клиент не устраивает, можно использовать X11 forwarding. Это альтернатива, если ваш клиент поддерживает запуск X-сессий (например, с помощью WSL и X410 или MobaXTerm на Windows).
- В PuTTY включите опцию
Enable X11 forwarding
в настройках SSH. - На клиенте запустите X-сервер и подключитесь через SSH. Запустите VNC Viewer, используя
localhost
.
Заключение
Соблюдение вышеописанных шагов позволит вам подключиться к VNC серверу через SSH туннель. Убедитесь, что на вашем VNC сервере запущен соответствующий VNC сервис и открыты необходимые порты. Таким образом, вы сможете безопасно и эффективно работать с графическим интерфейсом удаленного сервера.
Эти шаги должны помочь вам настроить работу через SSH туннель с использованием VNC. В случае выполнения всех инструкций, проблем с подключением возникнуть не должно. Профессиональный подход и внимательное выполнение шагов сможет обеспечить надежное подключение и использование удаленного рабочего стола.