SSH туннель через несколько прыжков с использованием замазки

13

У меня есть ситуация, когда я хочу подключиться к машине Linux с VNC (давайте назовем это VNCServer), которая находится за двумя последовательными машинами Linux, т. Е. Чтобы подключиться к ssh к VNCServer, я должен подключиться к ssh к Gateway1 со своего ноутбука, а затем из оболочки Gateway1 Я SSH в Gateway2, а затем из этой оболочки я, наконец, SSH в VNCServer. Я не могу изменить дизайн сети и поток доступа. Ноутбук -> Шлюз1 -> Шлюз2 -> Сервер. У меня нет привилегий root на Gateway1, и все порты, кроме 22 и 5901, закрыты.

Есть ли способ, с помощью которого я могу запустить программу просмотра VNC на своем ноутбуке и получить доступ к VNCServer? Я понимаю, что это может быть сделано с использованием функций туннелирования ssh, и у меня есть замазка на моем ноутбуке с Windows (извините, на рабочем ноутбуке нельзя установить Linux или Cygwin и т. Д.). Буду очень признателен за любую помощь, так как это сделает мою жизнь проще!

XKCD
источник

Ответы:

19

Putty поддерживает туннели ssh, если вы развернете дерево соединений, SSH, вы увидите запись для туннелей.

Локальные туннели создают порт localhost, открывающийся на вашей машине с Windows, который удален по указанному вами IP-адресу и порту. Например, когда я пытаюсь выполнить RDP к рабочему столу в моем доме, я обычно выбираю случайный локальный порт, например, 7789, а затем помещаю локальный IP-адрес рабочего стола (1.2.3.4:3389) в качестве удаленного хост. Обязательно нажмите «Добавить», затем «Применить». В этот момент, когда вы вернетесь к 127.0.0.1:7789, вы подключитесь к 1.2.3.4:3389 через сеанс замазки.

Вот тут-то и начинается самое интересное. Если вы затем настроите туннель порта на своем промежуточном блоке, настроив локальный порт, который вы указали в качестве удаленного порта в замазке, вы сможете затем отскочить через замазку через промежуточный блок до конечного пункта назначения. Вам все еще нужно будет выполнить несколько соединений ssh, но вы сможете пересекать vnc или rdp непосредственно из системы Windows, как только вы установите, что, как я полагаю, вы ищете.

ПРИМЕР

  1. Перейдите к панели туннелей в Putty (Connections-> SSH-> Tunnels, доступ к которой можно получить либо из контекстного меню, если сессия ssh уже активна, либо на экране начального соединения при запуске putty)
  2. Создайте туннель с локальным источником 15900 и удаленным источником 127.0.0.1:15900
  3. Подключиться (если еще не подключен) к Gateway1.
  4. На Gateway1, ssh -L 127.0.0.1:15900:VNCServerIP:5900 user @ Gateway2
  5. Как только SSH к Gateway2 будет запущен, попытайтесь выполнить vnc до 127.0.0.1:15900 - теперь вы должны увидеть экран VNC на дальней стороне!

ДОБАВЛЕННЫЙ БОНУС - не многие знают об этом, но этот процесс также можно использовать для прокси-трафика IPv6 / IPv4. SSH не заботится о том, какой протокол он использует для туннелей, поэтому теоретически вы можете получить доступ только к узлам IPv6 только из системы только IPv4, учитывая, что сервер ssh имеет двойной стек (имеет адреса как IPv4, так и IPv6).

Питер Грейс
источник
15

Есть альтернатива, если вы хотите использовать PuTTY для обоих прыжков. В этом примере мы переключаемся со шлюза № 1 (10.0.1.123) на шлюз № 2 (10.0.1.456) на порт 80 10.0.1.789.

  1. Сначала создайте переход к шлюзу № 1. Сначала настройте соединение с первым сервером. Настройте туннель ко второму шлюзу в Соединении> SSH> Туннели. В этом примере мы перенаправляем порт 2222 на второй шлюз.

    подключиться к серверу

    настроить туннель

  2. Теперь мы настроим второй прыжок. Мы проложим туннель через первый шлюз к следующему шлюзу и настроим переадресацию портов на второй шлюз. Соединение с localhost на порту 2222. Это будет туннелировать через работающее соединение ssh ко второму прыжку. В этом соединении мы настраиваем порт вперед от порта 3333 до 10.0.1.789.

    введите описание изображения здесь

    введите описание изображения здесь

  3. Теперь откройте браузер и перейдите к 127.0.0.1:3333, и вы будете туннелировать через два SSH-соединения к 10.0.1.789:80.

Скотт
источник
1
Есть ли способ добиться того же, используя один сеанс замазки с двумя туннелями, настроенными в меню SSH -> Tunnels? Таким образом, вам нужно открыть только один экземпляр замазки?
Ульрих