什么有效

什么有效

什么有效

我有以下设置:

server <-NAT-> VPS <-> client

我已经通过反向隧道和以下设置设置了 ssh 到我的服务器:

  • 在 VPS 上,

GatewayPorts yes

  • 在服务器上:

autossh -f -M 57575 -N -R <VPS ip>:9991:localhost:<server ssh port> vps

通过此设置,我可以简单地ssh -p 9991 <server user>@<VPS ip>从客户端登录到我的服务器。

什么不

  • 在 VPS 上,

GatewayPorts yes,以及其他与 SSH 情况相同的设置

  • 在服务器上:

autossh -f -M 57576 -N -R <VPS ip>:9992:localhost:8988 vps

python -m http.server 8988启动http服务器。我可以确认它已绑定0.0.0.0并且可以在本地计算机上访问它。

但是,当我尝试通过访问该网站时,http://<VPS ip>:9992我收到 ERR_EMPTY_RESPONSE。

从netstat来看,两种情况看起来是一样的。在 VPS 上:

tcp 0 0 0.0.0.0:9992 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:9991 0.0.0.0:* LISTEN -

在服务器上:

tcp 0 0 0.0.0.0:8988 0.0.0.0:* LISTEN 21003/python

tcp 0 0 0.0.0.0:<ssh port> 0.0.0.0:* LISTEN 550/sshd

tcpdump显示与 VPS 上的端口 9992 建立了连接,但没有任何内容到达 上的端口 8988 serverFIN立即在 VPS 上建立连接。

为什么这不起作用,而完全相同的 SSH 情况却可以呢?

答案1

您应该先启动服务器,然后启动远程端口转发。反之则不然。

我不确定这是为什么,但显然它解决了问题。

相关内容