двойной ssh tunnel

Здравствуйте, подскажите как можно устроить двойной 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 чтоб это все поднималось автоматом (ключи ссш надо настроить)

О, это как раз то что надо.

О, это как раз то что надо. Большое спасибо!

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".