Т.Л., др? Используйте ssh -g …
Я предполагаю, что команда, которую вы используете, похожа
ssh -L 1234:server:5678 ssh_server
Это будет прослушивать 127.0.0.1:1234
(IPv4) и [::1]:1234
(IPv6) на локальной стороне. Локальные подключения к любому из этих адресов достигнут server:5678
от ssh_server
. Другие компьютеры в вашей локальной сети не могут достичь туннеля, потому что 127.0.0.1
и [::1]
являются адресами обратной связи; под любой машиной подразумевается сама машина.
Чтобы сделать ваш туннель доступным для других компьютеров, привяжите его к адресу, который они могут достичь. Допустим, 192.168.0.14
является действительным адресом клиента, который запускает ssh
; привязать к нему:
ssh -L 192.168.0.14:1234:server:5678 ssh_server
или по всем доступным адресам (выберите одну команду):
ssh -L 0.0.0.0:1234:server:5678 ssh_server # IPv4
ssh -L [::]:1234:server:5678 ssh_server # IPv6
ssh -L 0.0.0.0:1234:server:5678 -L [::]:1234:server:5678 ssh_server # IPv4 and IPv6
Последний самый "открытый" туннель также может быть создан с помощью -g
. От man 1 ssh
:
-g
Позволяет удаленным хостам подключаться к локальным перенаправленным портам.
-g
эквивалентно параметру -o GatewayPorts=yes
и параметру GatewayPorts yes
в файле ssh_config
. Этот отрывок из man 5 ssh_config
объясняет это еще лучше:
GatewayPorts
Указывает, разрешено ли удаленным хостам подключаться к локальным перенаправленным портам. По умолчанию ssh(1)
связывает перенаправления локальных портов с адресом обратной связи. Это предотвращает подключение других удаленных хостов к перенаправленным портам. GatewayPorts можно использовать для указания того, что ssh
должен связывать переадресацию локальных портов с адресом подстановочного знака, что позволяет удаленным хостам подключаться к перенаправленным портам. Аргумент должен быть yes
или no
. По умолчанию no
.
Так:
ssh -g -L 1234:server:5678 ssh_server
Заметки:
- Не забудьте открыть выбранный порт в брандмауэре.
- Вы можете найти
autossh
полезным ...
- … Вместе с параметром
ExitOnForwardFailure
в ssh
(объяснено в man 5 ssh_config
).
- Обычно HTTP-сервер может отклонять URL-адреса, которые он не считает своими собственными. Вы сказали, что
localhost:port
работает в вашем браузере. Если URL-адреса, такие как http://192.168.0.14:1234
, не работают, несмотря на туннель, проверьте настройку сервера.
Дополнительные ресурсы: