двойной ssh tunnel
Semyon 30 сентября, 2009 - 10:16
Здравствуйте, подскажите как можно устроить двойной ssh tunnel.
Есть компьютер на работе с выделенным ip-адресом (server), т.е. он виден всем.
Есть 2 компьютера (host1, host2), которые находятся внутри разных локальных сетей.
Хочется перенаправить, к примеру, порт 22 с одной машины на другую.
Пробую так:
host1$ ssh -R 5000:server:22 user@server
host2$ ssh -L 4000:server:5000 user@server
Тогда при попытке соединиться получаю:
host2$ ssh -p 4000 localhost
ssh_exchange_identification: Connection closed by remote host
и одновременно на консоли где залогинен host2 на server появляется
channel 3: open failed: connect failed: Connection refused
Спасибо, Семен.
»
- Для комментирования войдите или зарегистрируйтесь
Если я правильно понял,
Если я правильно понял, задача: с host2 зайти по ssh на host1, чему мешает отсутствие маршрута между хостами. Тогда надо
host2$ ssh -L 4000:host1:22 user@server
Но host1 не виден для
Но host1 не виден для окружающего мира - это компьютер с ip-адресом 192.168.1.2 внутри некой локальной сети, что писать вместо host1?
Чет как то сложно. Во первых
Чет как то сложно. Во первых внутри локалки нужен хост с поднятым ссх. Путь это будет 10.10.0.1. Соответсвенно на нем открыт порт 22. Во вторых на маршрутизаторе этой сети ( пусть его внешний адрес будет 89.1.3.117) надо написать правило по пробросу какого нибудь свободного порта, к примеру 2222 , приходящих на внешний интерфейс на порт 22 нашего хоста 10.10.0.1. Тогда извне сети можно обратиться на наш хост так:
ssh -p 2222 89.1.3.117 .
Ежели в качестве маршрутизатора никс, то заморачиваться с пробросом порта ссх внутрь смысла нет, можно использовать ссх маршрутизатора, и из него опять же по ссх достучаться внутрь.
Через ссх можно пробрасывать порты На внутреннюю сетку. Для этого надо настроить соответвующим образом демон ссх, по умолчанию проброс портов запрещен (/etc/ssh/sshd_config параметр GatewayPorts man sshd_config). После настройки и перезапуска демона можно привязать любой из портов локального интерфейса на удаленной машине к любому из портов любого хоста внутренней сети.
Ну к примеру мы привязываем 1111 на localhost к 3389 на 10.254.0.12 (Сервер терминалов под вендой)
Для начала с удаленного хоста открываем ссх сессию
ssh -L 1111:10.254.0.12:3389 -p 2222 89.1.3.117
Затем (опять жеж с удаленного хоста) можно получить терминальную сессию через ссх тоннель так
rdesktop localhost:1111
Все это работает до тех пор пока открыта ссх сессия.
А если локальные сети и
А если локальные сети и маршрутизаторы этих сетей не принадлежат мне?
А именно, у меня есть один компьютер host1 подключенный через yota, другой компьютер host2 через corbina в Москве и сервер, который имеет доступный всему миру ip-адрес, который стоит в третьем месте.
И надо соединить host1 и host2 - 22 или 21 или любой порт.
.
Задача попасть с host1 на host2 через server?
тогда можно так:
host1$ ssh -R 2222:localhost:22 -gNv user@server
попадаес с host2 на host1:
host2$ ssh server -p 2222
Аналогично и на оборот
Двойной туннель не нужен, но если очень хочется:
host1$ ssh -R 2222:localhost:22 user@server -gNv
host2$ ssh -L 3333:localhost:2222 user@server -gNv
потом с host2 на host1 попадаем: ssh localhost -p 3333
PS есть autossh чтоб это все поднималось автоматом (ключи ссш надо настроить)
О, это как раз то что надо.
О, это как раз то что надо. Большое спасибо!