Переадресация порта SSH

8

Я хочу подключиться к своему компьютеру (локальному) за NAT через общедоступный сервер (общедоступный).

По местному:

ssh -g -R 8000:localhost:22 user@public

Тогда на публике:

ssh -p 8000 user@public 

Но я получаю error: Connection refused.

Когда я захожу на публичный сервер, я могу убедиться, что туннель работает:

ssh -p 8000 localhost

Который открывает SSH на локальном компьютере.

Я подозреваю, что что-то не так, что публичный сервер должен действовать как прозрачный прокси? Или как заставить это работать так.

мито
источник

Ответы:

11

В целях безопасности удаленные порты SSH по умолчанию будут привязываться к localhost / loopback. Часто не желательно разрешать другим хостам доступ к вашим перенаправленным портам.

Чтобы изменить это поведение, вам нужно сделать две вещи:

  • Включите эту GatewayPortsопцию на сервере.
  • Укажите адрес привязки или *привязку ко всем адресам на клиенте.

    ssh -R \*:8000:localhost:22 user@public
    

Избегайте звездочки, чтобы убедиться, что ваша оболочка не расширяет ее.

Дэн Карли
источник
0

Это больше похоже на проблему с настройками на удаленном компьютере. По умолчанию в openssh sshd (который, как мне кажется, используется) параметр GatewayPorts переключился на no, что заставляет удаленную переадресацию портов прослушивать только локальный хост.

Тогда решением будет отредактировать ваш файл / etc / ssh / sshd_config (или эквивалентный), установив для GatewayPorts значение yes или указанное клиентом. В случае, если вы выберете позже, вам нужно будет изменить свой туннельный запрос на что-то вроде -R *: 8000: localhost: 22.

andol
источник