Открыть порт autossh для публичного доступа

Я хочу получить доступ к Raspberry Pi Zero W в локальной сети через обход NAT . Я следил этому руководству (на китайском языке) , но у меня возникла проблема, описанная ниже.

Идея состоит в том, чтобы перенаправить порт SSH на локальном Raspberry Pi на удаленный компьютер с общедоступным IP-адресом, а затем получить доступ к Pi оттуда. По соображениям безопасности я заменил реальные значения на (скрытый) Raspberry Pi (доступ из локальной сети)

pi@nalzoks-pi:~ $ autossh -M 30000 -o "StrictHostKeyChecking=false" -o "ServerAliveInterval 10" -o "ServerAliveCountMax 3" -NR 20000:localhost:22 nalzok@remote-ip

На удаленном сервере

У меня нет проблем с входом в Pi с удаленного сервера

nalzok@iZuf68c45z6sk19lln4zvsZ:~$ ssh -p20000 pi@localhost
Linux nalzoks-pi 4.19.66+ #1253 Thu Aug 15 11:37:30 BST 2019 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Sep  8 10:12:30 2019 from ::1
pi@nalzoks-pi:~ $

На моем компьютере (вне локальной сети)

Однако,Я не могу получить к нему доступ напрямую с моего компьютера.

$ ssh -p20000 pi@remote-ip
ssh: connect to host remote-ip port 20000: Connection refused

На удаленном сервере

Я почти уверен, что брандмауэр открыт для портов 20000 и 30000 на удаленном сервере. Пытаясь самостоятельно устранить неполадки, я понял, что эти порты доступны только для локального доступа.

nalzok@iZuf68c45z6sk19lln4zvsZ:~$ sudo lsof -i -P -n | grep LISTEN
[sudo] password for nalzok:
sshd        601    root    3u  IPv4  13223      0t0  TCP *:22 (LISTEN)
sshd      12503    root    8u  IPv4 879255      0t0  TCP 127.0.0.1:1234 (LISTEN)
sshd      13026  nalzok    9u  IPv4 885817      0t0  TCP 127.0.0.1:30000 (LISTEN)
sshd      13026  nalzok   10u  IPv4 885818      0t0  TCP 127.0.0.1:20000 (LISTEN)

Как открыть порт 20000 для общего доступа?

1
задан 8 September 2019 в 05:29
1 ответ

Это поведение удаленной пересылки явно задокументировано в странице руководства SSH :

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

Если на сервере включена опция GatewayPorts , вы должны указать удаленную пересылку следующим образом, чтобы воспользоваться ею:

-R *:20000:localhost:22
1
ответ дан 3 December 2019 в 23:00

Теги

Похожие вопросы