OpenSSH в Windows всегда привязывает сокеты, используемые для удаленной пересылки, к LOOPBACK

OpenSSH в Windows всегда привязывает сокеты, используемые для удаленной пересылки, к LOOPBACK

Как следует из названия.

Хост А действует как сервер (хост-бастион, называйте его как хотите).

Теперь хост B выполняет:

ssh -R 2222:localhost:22 пользователь@A

в результате в точке A создается TCP-сокет, но он привязан к 2222@Обратная петлят.е. предотвращая удаленные подключения к нему.

Как изменить 127.0.0.1 на 0.0.0.0или что-нибудь ещеболее разумно?

решение1

Вы пропустили необязательную bind_addressчасть спецификации -R. Вsshдокументация(как связаноМайкрософт) он пишет,

По умолчанию прослушивающие сокеты TCP на сервере будут привязаны только к интерфейсу loopback. Это можно переопределить, указав bind_address. Пустой bind_addressили адрес *указывает, что удаленный сокет должен прослушивать все интерфейсы. Указание удаленного сокета будет успешным только в том случае, если включена опция bind_addressсервера (см.GatewayPortssshd_config(5)).

Вы используете версию параметра с тремя кортежами, но вам нужна версия с четырьмя кортежами:

-R port:host:hostport
-R [bind_address]:port:host:hostport

Итак, чтобы разрешить любому человеку подключаться к прослушиваемому порту на удаленном сервере, вам необходимо убедиться, что GatewayPortsв настройках сервера включена соответствующая функция.sshd_config ииспользуйте такую ​​вариацию команды:

ssh -R :2222:localhost:22 user@A

Начальное двоеточие ( :) также подразумевает начальный подстановочный знак звездочки, который позволяет подключаться откуда угодно. Лично я думаю, что эта версия с подстановочным знаком делает более ясным, что написанное является намеренным:

ssh -R *:2222:localhost:22 user@A

Связанный контент