2013年1月24日星期四

用 Windows 命令行实现自动 SSH 代理




SSH Proxy就是通过SSH监听一个本地端口做代理转发,从而实现代理上网的功能,Windows下比较有名的SSH Proxy客户端就是Tunnelier了,设置简单方便。但是想在系统启动是运行并自动监听就比较麻烦了,没有相关的设置,而且客户端软件本身启动也需要一定的时间,如果能在命令行在做端口监听相比来说就要快多了。在Linux下可以轻松实现这个脚本,在Windows下,其实也很简单。
Windows的DOS命令行很原始也很强大,虽然在Linux shell面前显得有些渺小,但在需要的时候也能彰显自己的威猛。
原理:
Linux下用SSH命令来进行远程登录和本地监听,而windows下也有plink来实现同样的功能。如果实现了ssh,基本功能也就八九不离十了。
关键代码:
plink.exe -C -N -D 127.0.0.1:8080 用户名@服务器IP -pw 密码 -P 端口 -v
可以通过以上代码实现到本地8080端口的监听。
断线重连:
在cmd命令行下,是过程执行程序的,如果代码段中调用一个程序一直在执行,则它下面的代码段不会继续。可以通过这个原理来实现。一旦断线,就重复执行该代码段即可。
:relink
plink.exe -C -N -D 127.0.0.1:8080 用户名@服务器IP -pw 密码 -P 端口 -v
goto :relink
至此就 可以写一个简单的命令行脚本来实现本地监听并重连了。
后台执行:
总是开一个CMD窗口是不是看着很碍眼?那就让它后台执行吧。通过RunHiddenConsole.exe(本站下载)来实现。用法很简单
RunHiddenConsole.exe autossh.cmd
通过以上命令就可以在后台执行autossh.cmd脚本。
可执行脚本文件:
既然所有的功能都实现了,那就再写一些脚本来方便操作吧,可以一键开启/关闭,可以做开机启动,这样Dropbox(注册直接加送500M链接)就可以开机启动直接启动了。
一些方便SSH Proxy管理的脚本
Tips:
将start.cmd做一个链接放到Windwos启动文件夹内,就可以开机自启了
– 将man.cmd做个快捷方式到桌面,使用起来更方便。
– autossh.run为运行文件,为了保证正常重连请不要随意删除。
命令行管理:
脚本都写好了,当然还需要一个管理界面。
实现了一个简单的管理界面
下载:
打了个包提供给大家用下,有什么问题可以留言。(压缩包已经包含了plink和RunHiddenConsole,不需要再单独下载)
下载地址:sshproxy.v1.0.rar
* 下载后请先配置autossh.cmd并运行来调试,如果最后一行是 Local port 127.0.0.1:8580 SOCKS dynamic forwarding 就说明成功了。
进阶:
经 @YuanKevin 老大指点,可以将bat文件做成exe文件,防止密码泄露问题。另外也可以做成系统服务来运行,更为安全,方便。对于bat转exe网上有很多这方面的软件,大家可以自己去探索一下。转成服务的话相对复杂一些吧,有兴趣可以研究下。
后记:
至于配合Chrome+Switchy或者Firefox+Autoproxy就不再说明了,也很简单,注意代理方式要选sokcet。

没有评论:

发表评论