我有一台本地机器 M,我想将其暴露给互联网,但我无法使用端口转发。我想使用我的 vps S 作为代理,打开 M 上的端口 22 到互联网。我想使用这个端口进行ssh访问,所以解决方案必须允许所有tcp流量,不仅仅是http,正如这里提出的许多其他问题一样。我尝试过ssh -f -N -R 9000:localhost:22 example.com
在M上使用,其中localhost
M是,example.com是指向S的域名。这允许机器S通过S:9000访问M,但不允许互联网上的任意机器通过example.com:9000访问M ,这就是我想要的。 (请注意,任意机器连接的端口不一定需要与 S 可以连接到 M 的端口相同。)我尝试使用 nginx tcp 反向代理,但它似乎不起作用。
一些注意事项:
转发本身不需要使用 ssh 来完成,我知道它有点慢。
我打算让它长时间运行(我知道这可能存在安全风险)。
如果有的话,M 运行 Arch Linux,S 运行 Debian 10 Buster。
答案1
可能的问题是 S 上 sshd 的配置。
你/etc/ssh/sshd_config
需要确保你有
GatewayPorts yes
允许来自任意主机的连接。更改此值后需要重新启动 ssh
sudo systemctl restart ssh