由于某些特殊的原因,我们需要使用 SSH 代理来访问一些网站。在 Windows 下有 myEnTunnel 等管理 SSH 的小软件,而在 Linux 和 Mac OS 下,系统一般已经自带了 OpenSSH 客户端,所以可以直接在终端命令行下来进行 SSH 的连接。但是不是所有人都喜欢在键盘上敲命令的,而且用 SSH 作为代理使用也有一些缺点,比连接空闲一段时间会自动断线。当然你可以用 autossh 这个工具,但是 autossh 也有它办不到的事情。所以我做了一个小软件,即 SimpleSSHProxy,顾名思义,是一个简单的 SSH 代理管理小软件,它有以下特点:
- 小巧,整个软件和源代码的压缩包才200多KB。
- 使用方便,软件显示为菜单栏图标和下拉菜单,无 Dock 图标,不会对你的工作界面产生干扰。
- 简洁,仅提供与代理相关的一些参数设置,不会另人感到困扰。
- 功能完善,可以提供 Socks 和 HTTP 代理,满足不同的需求。可以为其他电脑提供代理。支持通过 autossh 来自动管理 SSH 连接,在使用密码验证的情形下也能提供类似 autossh 的连接保持、掉线检测和重连功能。详细实现方法见这篇文章。
一些说明:软件的实现其实很简单,通过后台调用 polipo 来实现 HTTP 代理,调用 autossh 或一个 expect 脚本来连接 SSH。设置选项上,相信用过 SSH 代理的同学一看就知道怎么设置了,需要说明的就两点,"为其他电脑提供代理",选中后,如果你的局域网中有其他电脑或设备,只需将代理设置为本台电脑的 IP 和相应端口,就可以使用 SimpleSSHProxy 提供的代理了。"使用密码"选项,我已经提到过了,autossh 对使用密码的 SSH 认证无法很好的支持,但是 autossh 的连接管理特性又十分方便,所以,如果你使用的是 SSH 密钥验证方式,就不用选择"使用密码",软件就会调用 autossh。如果你不得不使用密码验证,软件会调用一个 expect 脚本来连接 SSH,同样可以提供类似 autossh 的断线重连等功能。当然还是推荐大家设置 SSH 的密钥认证,具体设置方法请自行搜索。如果你实在懒得设置密钥或者服务器比较特殊,只支持密码验证,那就没的选了。我也打算在软件的后续版本中提供一键设 置 SSH 密钥的功能来方便大家,你也可以等一等~
SimpleSSHProxy 是我初学 Objective-C/Cocoa 的第一个小作品,现在也仅仅是半成品阶段,欢迎大家测试,对软件有什么意见或建议尽管提出来。至于发布许可证什么的,我也懒得弄了,软件和代码大家随意传播和使用,当然,如果你在传播时能稍微提一下我和这篇文章,那真是感激不尽了~
SimpleSSHProxy 目前的版本为 Pre-release rev3.2,源码和软件点此下载
PS:差点忘了,感谢国家
1 条评论:
楼主加油。我也刚刚开始学习Object-C。
发表评论