翻入墙内 | 反向SSH Tunnel | Reverse SSH Tunnel

状况 | Case 因为GFW的关系,越来越多的网友熟练掌握了使用SSH Tunnel“翻墙”的方法——这种方法使我们通过墙外一台主机作为代理中转访问国际互联网。网上关于SSH翻墙的文章已经很多,无须赘述,提及此只为特别感谢郭嘉。 少数情况下,我们不仅需要翻出墙,可能还需要从墙外翻回来。比如你交友不慎,某个邪恶国家友人强烈要求感受一下国内的网络环境;你如此勤奋以至于希望在家中仍然能够连接到公司网络开工,公司却出于体恤员工的考虑没有提供VPN,此时就需要手段先“翻”到公司的院子里。反向的SSH Tunnel就是这样的手段。 原理 | Principle 在一般的SSH转发模型中,我们从大中华局域网中的Desktop B去SSH连接外部SSH Server X,将A的Px端口映射到X的SSH Server端口(22)。连接建立后我们就可以在应用中指定127.0.0.1:Px为代理。发往127.0.0.1.Px的请求将通过Tunnel发送到X:22,并根据SSH协议中转发的规定转发到外部网络。(此部分图中未表现)。 在反向SSH Tunnel中,我们由大中华局域网内Desktop B用SSH连接外部主机Desktop A上的SSH Server,并建立一个反向Tunnel,将A:Port1映射到B:Port2。相比于一般的正向Tunnel,反向Tunnel允许SSH连接的被动方A将Port1上的请求通过Tunnel转发到B:Port2上。而B上应有一个应用监听Port2,对Port2上的请求做适宜的处理。对于一般的网络代理而言,此“应用”即为SSH Server。SSH Server监听22端口,并对来自SSH Tunnel的请求通过本地网络转发,起到代理的作用。 实例 | Practice 用到反向SSH Tunnel,是因为之前有这样一个需求:我们有一个开发中的网站,将要在外部Web Server(Host A)上布署测试环境,需要在外部主机上获取代码并持续更新。代码通过公司内部的SVN Server(Host S)进行版本控制,公司外部无法访问。我们不希望在外部主机上通过VPN一类软件登录公司网络,而是在必要的时候由内部网络发起连接。因此我们使用反向SSH Tunnel。 创建反向SSH Tunnel的过程由内网的桌面(Host B)来完成 1root@B#ssh -NfR {PORT_A}:localhost:{PORT_B} {HOST_A} -l {USER@HOST_A} 如 1root@desktop#ssh -Nf$ 8080:localhost:9090 www.example.com -l webadmin 输入密码确认后,一个从desktop:8080到www.example.com:9090的反向Tunnel就建好了。在Host A上用 1netstat -ntl | grep [...]

用Shell Script导出SVN版本间变更的文件

#!/bin/bash # 配置 # TODO 将配置信息保存在外部文件中以方便产生不同目标的导出。 START=9981 END=10054 VER=eom BUILD=v1 OUTPUT_PATH=builds/$VER/$BUILD/files/ # 清理 if [ -d "$OUTPUT_PATH" ]; then rm -rf $OUTPUT_PATH fi # 得到更改过的文件数量和文件名列表 # svn diff –summarize 返回"Status \t Filename" COUNT=`svn diff –summarize -r $START:$END | wc -l` Diff=`svn diff –summarize -r $START:$END` until [ $COUNT -lt "1" ] do # echo "$Diff" [...]

Posted in: Linux, Shell, SVN by Wang Xiaoxing 2 Comments , , , , , ,

Linux下DB2的问题总结

使用db2cc命令启动db2 control center时出现 – Error: Can’t connect to X11 window server using ’0.0′ as the value of the DISPLAY 解决方法: 12- su root – xhost + 关于xhost: http://linux.about.com/library/cmd/blcmdl_xhost.htm 使用control center操控数据库时抛出SQL4414N错误 解决方法: 12- su dasusr1 – db2admin start 在用db2move导出数据库时出现如下的错误 Application code page not determined, using ANSI codepage 1208 Error opening list file. Terminating … **Error occured [...]

Posted in: DB2 by Benny Chen 1 Comment ,