神奇的SSH tunnel

我们经常要打包给测试,这是一件很烦的事情。zip文件,上传,然后unzip,有时一天打几个包,简直不能忍。要是可以用git更新多简单呀。可惜git是跑在公司内网的,但是测试服务器跑在阿里云,中间隔了很多道墙。墙不可怕,可怕的是找不到穿墙的工具。哈哈,ssh tunnel就是这样神奇的工具,打通外网和内网。使用tunnel感觉就像在用一个精简版的nginx,本质就是代理!

windows 的用户要使用ssh tunnel最好装一个ssh client. Putty is good, xshell is better. 至于linux用户,写几句指令吧。

ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host 
ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host 
ssh -C -f -N -g -D listen_port user@Tunnel_Host

这里不想多说如何使用tunnel了,查一下文档总能解决问题的。讨论一下使用场景。

反向隧道(外网访问内网)

tunnel描述

上图展示了一个十分常用的反向隧道配置,让外网的机器可以访问内网的站点。在远程的机器上 通过netstat可以看到一个端口侦听:

tcp        0      0 0.0.0.0:9800            0.0.0.0:*               LISTEN

看到这里隧道是在tcp传输的,此时隧道已经打通,在remote上可以通过http://localhost:1080来访问本地www.phpmyadmin.me的服务。如果有洁癖,不喜欢1080这个端口,可以通过nginx及host代理一个phpmyadmin.原理是修改host为 127.0.0.1 www.phpmyadmin.me,然后在nginx代理www.phpmyadmin.me到localhost:1080

正向隧道(内网访问外网)

有时我们不想让远程主机上一些服务暴露在外网,但是自己又要访问,这个时候使用tunnel是一种解决方案。原理是配置一个正向隧道,打通本地到远程的内网。其实只要把类型切换为local就可以了。

隧道还有很多应用的场景,把它看作一个神奇的代理就对了。

阅读更多
换一批

没有更多推荐了,返回首页