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

20

Мне требуется постоянный SSH-доступ к хосту в нашем отделе, чей IP-адрес выделяется динамически. Я установил удаленный туннель SSH от целевого хоста к одному из наших хостов, который обладает статическим IP-адресом:

ssh -f -N -g -R :22223:localhost:22 tunnelhost

Когда я указываю SSH на локальный порт 22223на хосте туннеля, туннель работает нормально. Моя проблема в том, что я не могу связать туннель ни с чем, кроме localhost, - то есть, когда я пытаюсь подключиться к SSH удаленно tunnelhost:12323, нет открытого порта для его получения. Я также попробовал:

ssh -f -N -R :22223:localhost:22 tunnelhost -o GatewayPorts=yes

Но все равно не повезло. Netstat показывает мне:

[me@tunnel_host ~]$ netstat -an | grep 22223
tcp        0      0 127.0.0.1:22223         0.0.0.0:*               LISTEN
tcp6       0      0 ::1:22223               :::*                    LISTEN

Подтверждение того, что туннель привязан только к localhost. Я добавил исключение порта на хосте туннеля с помощью firewalld-cmd и убедился, что сетевое оборудование не мешает соединению. Любые идеи относительно того, что это может быть?

Ура, Джеймс.

Джеймс Пол Тернер
источник

Ответы:

29

Вам необходимо включить GatewayPorts=yesв конфигурации SSHd ( /etc/ssh/sshd_config), а не клиента, чтобы включить привязку к интерфейсам, отличным от обратной петли, на удаленных портах.

-o GatewayPorts=yes

Работает только для локальных портов при передаче в sshкоманду.

Дарт Андроид
источник
Дарт Андроид, Спасибо за ваш ответ. Кажется, вы правы в отношении -g и -o GatewayPorts, которые работают только для (-L) туннелей. Для полноты, вот немного больше информации об этой проблеме, на случай, если кто-то еще столкнется с этим в будущем. bugs.debian.org/cgi-bin/bugreport.cgi?bug=228064
Джеймс Пол Тернер
3
GatewayPorts=clientspecifiedэто несколько более безопасный параметр, см. askubuntu.com/questions/50064/reverse-port-tunnelling . В этом случае :22223:localhost:2требуется пустой адрес связывания (конечный двоеточие ).
Майкл Гоерц
1
Я бы сказал, что сам GatewayPorts=clientspecifiedпараметр не является более безопасным, скорее он позволяет лучше контролировать, какие соединения будут привязаны к шаблону, а не просто привязывать их все к шаблону.
Ник
Кроме того, перезапустите sshd после изменения sshd_config (на случай, если вы забудете)
Ник
Aware Имейте в виду, что GatewayPorts=yesоткроет перенаправленные порты в мир.
ccpizza