Переадресация порта SSH
Я хочу подключиться к своему компьютеру (локальному) за NAT через общедоступный сервер (общедоступный).
По местному:
ssh -g -R 8000:localhost:22 user@public
Тогда на публике:
ssh -p 8000 user@public
Но я получаю error: Connection refused.
Когда я захожу на публичный сервер, я могу убедиться, что туннель работает:
ssh -p 8000 localhost
Который открывает SSH на локальном компьютере.
Я подозреваю, что что-то не так, что публичный сервер должен действовать как прозрачный прокси? Или как заставить это работать так.
2 ответа
В целях безопасности удаленные порты SSH по умолчанию будут привязываться к localhost/loopback. Часто не желательно разрешать другим хостам доступ к вашим перенаправленным портам.
Чтобы изменить это поведение, вам нужно сделать две вещи:
- Включить
GatewayPorts
вариант на сервере. Укажите адрес привязки, или
*
привязать ко всем адресам, на клиенте.ssh -R \*:8000:localhost:22 user@public
Избегайте звездочки, чтобы убедиться, что ваша оболочка не расширяет ее.
Это больше похоже на проблему с настройками на удаленном компьютере. По умолчанию в openssh sshd (который, как мне кажется, используется) параметр GatewayPorts переключился на no, что заставляет удаленную переадресацию портов прослушивать только локальный хост.
Тогда решением будет отредактировать ваш файл /etc/ssh/sshd_config (или эквивалентный), установив для GatewayPorts значение yes или указанное клиентом. В случае, если вы выберете позже, вам нужно будет изменить свой туннельный запрос на что-то вроде -R *:8000:localhost:22.