打开 autossh 端口以供公众访问

打开 autossh 端口以供公众访问

我想通过以下方式在本地网络上访问 Raspberry Pi Zero WNAT 遍历.我关注的是本教程(中文),但遇到了下面描述的问题。

这个想法是将本地 Raspberry Pi 上的 SSH 端口转发到具有公共 IP 的远程机器,然后从那里访问 Pi。出于安全原因,我已将实际值替换为nalzok@remote-ip

在 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

这种远程转发行为在SSH 手册页

默认情况下,服务器上的 TCP 侦听套接字将仅绑定到环回接口。这可以通过指定 bind_address 来覆盖。空的 bind_address 或地址“*”表示远程套接字应侦听所有接口。仅当启用了服务器的 GatewayPorts 选项时,指定远程 bind_address 才会成功(请参阅 sshd_config(5))。

如果GatewayPorts选项在服务器上启用,您可以像这样指定远程转发以利用它:

-R *:20000:localhost:22

相关内容