为何Windows主机可访问Linux主机上绑定127.0.0.1的Jekyll服务?
为何Windows主机可访问Linux主机上绑定127.0.0.1的Jekyll服务?
哇,这事儿确实够反常识的——按常理来说,绑定127.0.0.1的服务只能被本机访问,你居然在Windows上敲自己的127.0.0.1:4000能打开Linux上的Jekyll,肯定是有隐藏的端口转发在偷偷干活!
我帮你捋捋最可能的原因:
最大概率:SSH本地端口转发
你是不是之前用SSH从Windows连接Linux的时候,加了类似这样的参数?
ssh -L 4000:127.0.0.1:4000 root@192.168.9.22
这种本地端口转发会把Windows本机的4000端口流量,通过SSH隧道直接传到Linux的127.0.0.1:4000上。也就是说你在Windows访问127.0.0.1:4000,其实是走隧道蹭到了Linux上的Jekyll服务,完全符合你看到的现象。
其他可能的原因
- 第三方工具的端口映射:比如你用的VPN、远程桌面工具,甚至一些代理软件,有没有自动帮你做了端口转发?有些工具会默认映射常用开发端口,比如4000(Jekyll默认端口)。
- 误操作的端口转发配置:比如Windows上的防火墙规则、网络共享工具,有没有不小心把本地4000端口指向了Linux的
192.168.9.22:4000?不过这种情况概率低,因为你Linux的服务只绑了127.0.0.1,外部直接访问192.168.9.22:4000是连不上的。
怎么验证?
- 先把Windows上所有SSH连接关掉,然后刷新Chrome试试——如果访问不了了,那就是SSH端口转发的锅。
- 在Windows上打开命令提示符,输这个命令看看本地4000端口被哪个进程占用:
netstat -ano | findstr :4000
要是看到进程是ssh.exe或者类似的远程连接工具,那实锤就是端口转发了。
总结一下:这种“跨主机访问对方localhost服务”的情况,90%以上都是本地端口转发在起作用,大概率是你之前开SSH的时候带了转发参数,自己没留意到而已~
备注:内容来源于stack exchange,提问作者TyeolRik
相关产品推荐
相关产品推荐

