SSH隧道访问内网服务
适用场景描述:我有一台外网服务器a,1 台内网服务器b,我想让别人在外网访问b上的网站。b跟a不在同一个局域网。b没有公网ip地址a有 解决方案1:通过花生壳实现 我的解决方案: 两台机器都是linux系统通过ssh,b可以访问a,a不可以访问b。由b到a建立ssh隧道。 b上的本地端口是80,a上的隧道监听入口是20001.这样在a上访问端口20001就跟直接访问b上的80端口的结果一致。 此时由于隧道是监听在本地的端口上的。从外网访问不到a上的20001. 我们在a上现在启动一个端口转发程序rinetd 。让访问a上20002端口的数据全部转发给a上的20001,a上的20002是监听在任意ip地址的,所以通过外网可以访问a上的20002端口 这样就实现了通过a的20002端口访问内网b上的80端口,只要隧道保持不断,b就像真的拥有了固定ip地址一样。 由于ssh直接建立的隧道有可能会断开,所以我使用了autossh工具来自动完成断线重连功能。 说明一下:隧道是在b上建立的,把下边a.a.a.a替换成a的公网ip地址即可 隧道建立方式1 autossh -p22 -M 5000 -NR 20001:0.0.0.0:80 root@a.a.a.a 隧道建立方式2 ssh -R 20001:localhost:80 root@a.a.a.a 端口转发配置 # bindadress