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

Как связать несколько туннелей SSH вместе в Linux

У меня такая ситуация:

A ----- | ------ B ----- | ------ Работа

Работать можно по SSH в B, а A может по SSH в B, но кроме этого все защищено брандмауэром. Фактически я хотел бы создать туннель SSH между Work и A, чтобы я мог использовать VNC в Work из A.

С работы создал удаленный SSH-туннель:

ssh -R 5900:localhost:5900 B

Это означает, что я могу использовать VNC из B в работе. Но что мне нужно сделать, чтобы расширить это до A. Я попытался создать локальный SSH-туннель от A до B следующим образом:

ssh -L 5901:localhost:5900 B

Но это дает, bind: Cannot assign requested address, так как 5900 уже назначено.

Есть ли у кого-нибудь идеи, как это сделать?

Просто чтобы ответить на мой собственный вопрос, по какой-то причине вам нужно принудительно использовать ipv4, то есть из A

ssh -4 -L 5901:localhost:5900 B

Это работает.

Я не уверен, будет ли мой ответ идеальным, но я попробую.

Очевидно, что настройка, которую вы пытаетесь сделать, не будет работать, поскольку вы перенаправляете с порта 5900 на B для работы, а также перенаправляете порт 5900 с A на B.

Но вы не можете использовать один и тот же порт для двух разных подключений, поэтому вы получаете сообщение об ошибке «привязка: невозможно назначить запрошенный адрес, поскольку 5900 уже назначен».

Что вы можете сделать, так это настроить пересылку на B.

Затем попробуйте использовать эту команду из A: # ssh -L 5901: localhost: 5901 B

А затем перенаправить трафик с порта 5901 на порт 5900 и наоборот на B.

У меня нет настройки и времени, чтобы проверить это, но мне очень любопытно узнать, будет ли это работать или нет.

Итак, просим вас вернуться сюда с результатами, как только вы это протестируете.