Мультиплексировать TCP соединение через тупое соединение оболочки?

Я подключаюсь к VPN, шлюз которого достаточно неправильно настроен, и единственное, что я могу с ним сделать, это ssh на конкретный хост Linux, настроенный для моего использования внутри VPN, а затем использовать этот хост в качестве терминала. нет (ни scp ни ssh переадресация порта ни ssh проксирование с -D работать должным образом.)

Я хочу использовать это соединение для оценки перенаправления портов между другим хостом внутри VPN и моим ноутбуком.

Я был в состоянии установить это с socat:

$ socat TCP4-LISTEN:54321,bind=localhost,fork SYSTEM:"ssh user@linuxhost nc otherhost 54321"

Это создает прослушиватель на моем локальном порту 54321 и перенаправляет новые соединения на удаленный хост посредством ssh а также nc, Это не красиво, но это работает.

Проблема заключается в том, что для каждого нового подключения к удаленному хосту требуется новое согласование соединения SSH, что замедляет работу на несколько секунд.

Я пытаюсь выяснить, есть ли способ мультиплексировать несколько слушателей через один ssh подключение. (За то, что это стоит, я мог бежать socat вместо nc на удаленной стороне, если это необходимо.)

ОБНОВЛЕНИЕ: я обнаружил sshuttle, который является довольно гладким решением этой проблемы:

$ sshuttle -r user@linuxhost OTHERHOST_IP 
...
$ nc OTHERHOST_IP PORT   # works via transparent proxy

Я немного опасаюсь sshuttle, потому что он почти слишком умен для своего блага: он пытается прозрачно выполнять проксирование и предоставляет доступ к любому порту подсетей, выбранных внутри VPN.

Что было бы идеально, это что-то похожее на sshuttle это представляет собой нечто вроде интерфейса переадресации портов ssh:

$ sshuttle -r user@linuxhost -L LOCALPORT:OTHERHOST:PORT
...
$ nc localhost LOCALPORT

0 ответов

Другие вопросы по тегам