公司在异地有一个项目,项目在内网有一个linux集群开发人员通过 xshell进行操作,但是开发过程中还需要公司开发人员进行远程操作,原来采用的方案是向日葵,需求能实现但是限于网络环境向日葵实在是有些卡,还有就是公司一个开发人员就需要对应异地的一台机器,整体效率挺差。
考虑到当前需求无非就是能 ssh到异地的内网还有调试一些 web应用,这些都可以通过代理的方式来实现,所以解决此问题的方案就是:基于 ssh的反向代理。
下图为整体思路:
1.先在公司的网络管理里面添加一个端口映射,将 7322映射到 10.0.6.73 的 22端口之上,这样在互联网上就能访问这台内网的 linux服务器。
2.在异地找一台PC,然后通过 ssh客户端建立一个基于 ssh的反射代理即可,这里用的是 MobaXterm ,因为该软件支持不登录 shell就能建立通道。(异地那里人员混乱,防止别人登录操作),配置远端端口为 14922,本地转发地址为 192.168.0.149:22。这样通道即建立成功(图中黄线)
3.登录 10.0.6.73会发现 14922端口已经开始监听了,但是绑定的地址却是 127.0.0.1 ,这个需要修改 /etc/ssh/sshd_config将GatewayPorts改为 yes,然后重新将第2步建立的连接重连一下就可以了。
4.到此,ssh连接 10.0.6.73 14922端口就直接连到了异地的内网了。
5.如果浏览器需要访问内网的 web服务的话,再让开发人员在自己的 ssh client上建一个 socks隧道然后修改浏览器的代理设置就可以了。