You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 11反向SSH隧道映射IIS服务至VPS后无法访问的问题求助

Windows 11反向SSH隧道映射IIS服务至VPS后无法访问的问题求助

看起来你的问题主要出在反向SSH隧道的绑定范围IIS的主机头配置两个关键点上,咱们一步步来排查解决:

1. 反向隧道默认仅绑定VPS回环地址,外部无法访问

从你提供的netstat -tlnp结果能看到,VPS上的80端口只监听127.0.0.1:80::1:80,这意味着只有VPS本地能访问这个隧道,外部互联网请求根本发不到这个端口上。

虽然你已经在sshd_config里开启了GatewayPorts,但默认的ssh -R 80:localhost:80命令只会把隧道绑定到VPS的回环地址。你需要修改命令,明确指定让隧道绑定VPS的所有网卡:

ssh -R 0.0.0.0:80:localhost:80 root@139.162.19.185

或者用*代替0.0.0.0,效果相同:

ssh -R *:80:localhost:80 root@139.162.19.185

执行完这个命令后,再跑一遍netstat -tlnp,你应该能看到0.0.0.0:80:::80处于监听状态,这时候外部就能访问VPS的80端口了。

2. IIS的主机头限制导致400错误

你用curl http://127.0.0.1:80返回“Invalid Hostname”,这是因为IIS默认绑定的是localhost或者特定的主机头,当请求的Host是127.0.0.1时,IIS识别不了这个主机名,所以返回400错误。

解决这个问题有两种方式:

  • 修改IIS绑定设置
    打开Windows的IIS管理器,找到你的默认站点,右键选择「编辑绑定」,在HTTP绑定的窗口里,把「主机名」留空(或者添加一条绑定到127.0.0.1的记录),这样IIS就会接受任意Host头的请求。
  • 临时测试验证
    如果你只是想快速验证隧道是否正常,可以给curl加上Host头:
    curl -H "Host: localhost" http://127.0.0.1:80
    
    正常情况下应该能返回IIS的默认首页。

3. 最后确认VPS的SSHD配置

虽然你说已经开启了GatewayPortsAllowTcpForwarding,还是建议再检查一下/etc/ssh/sshd_config的具体值:

  • GatewayPorts建议设置为yes(允许隧道绑定所有地址)或者clientspecified(允许客户端指定绑定地址),如果是no的话会限制只能绑定回环;
  • AllowTcpForwarding必须设置为yes
    修改配置后记得重启SSHD服务:
systemctl restart sshd

另外,你提到VPS上装Apache能正常跑80端口,说明Linode这边的防火墙和端口封禁都没问题,不用再排查这部分了。

备注:内容来源于stack exchange,提问作者Sugumaran Veejakumaran

火山引擎 最新活动