ssh -D命令可以为用户提供sock5代理,这也是目前国内用户最经济的fan墙方案。他有价格便宜,使用简单等诸多优点。但是每次开机都需要打开Terminal,然后敲一句 ssh -qTfnN -D $port $user@$host,然后还要输入密码确实是一件非常麻烦的事情。再加上如果网络条件不好,ssh -D再后台断了都不知道。
所以今天在这里教大家使用Expect写的脚本自动连接ssh -D,然后使用launchd设置这段脚本开机自启。
首先是自动连接ssh -D的Expect脚本,你可以把这个脚本直接创建在/usr/local/bin 或 /usr/bin下面,这样本机所有的用户都可以直接调用这个脚本连接ssh -D了。在这里我们把这个脚本放到/usr/local/bin下命名为sshd。
直接在Terminal输入以下命令回车。
sudo vi /usr/local/bin/sshd
在Password:后面输入你的密码。然后在弹出的”/usr/local/bin/sshd” [New File]字符界面上输入 “i”进入编辑状态。
输入以下脚本:
#!/usr/bin/expect -f set port 9000 set user username set host yourserver.com set password passwd set timeout -1 spawn ssh -qTfnN -D $port $user@$host expect "*assword:*" send "$password\r" interact #expect eof
其中9000那改成你要设置的sock5代理的本地端口,username那输入你的ssh服务的用户名,yourserver.com是你的ssh服务器地址或者IP,Passwd是你的ssh密码。
编辑完成后,按esc退出编辑状态,然后输入“:wq”保存并退出编辑界面。
接着给/usr/local/bin/sshd加上可执行权限。
sudo chmod +x /usr/local/bin/sshd
这样的话,你每次直接在Terminal下面输入 /usr/local/bin/sshd ,就可以直接启动ssh -D了。
不过本着还可以更懒的选择,我们用launchd设置这段脚本开机自启。
在/Library/LaunchDaemons/下创建一个plist文件,文件名为 com.hebine.sshd.plist (这个文件名大家可以根据自己的喜好随便选。)
Terminal下输入命令
sudo vi /Library/LaunchDaemons/com.hebine.sshd.plist
文件内输入以下内容
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>KeepAlive</key> <true/> <key>Label</key> <string>com.hebine.sshd</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/sshd</string> </array> <key>RunAtLoad</key> <true/> <key>StandardOutPath</key> <string>/var/log/sshd-out.log</string> <key>StandardErrorPath</key> <string>/var/log/sshd-err.log</string> </dict> </plist>
sshd的日志文件保存在/var/log/sshd-err.log 和 /var/log/sshd-out.log这两个地方。
然后修改此文件的权限
sudo chown -R root:wheel /Library/LaunchDaemons/com.hebine.sshd.plist sudo chmod 644 /Library/LaunchDaemons/com.hebine.sshd.plist
你可以使用下面的命令加载上面的launchd服务。
launchctl load ~/Library/LaunchAgents/com.hebine.sshd.plist
重启电脑,OK。我是用ssh -D + Chrome + PAC上网。
Kevin
前来学习~,shimo目前也用着很好
Aki Xavier
输入以下脚本:
============
这段太坑爹了,还有html标签在里面
stonehoo
我原来也是输入命令的,后来找了一个客户端软件,名字叫做secret socks,还是免费的,推荐使用。
Ksky
@Aki Xavier Sorry,忘记删除了。
Livid
可以将本地机的 ~/ssh/id_rsa.pub 内容加入到服务器的 ~/.ssh/authorized_keys ,这样就不用输入密码了。
如果本地机没有 id_rsa.pub 文件,那么输入:
ssh-keygen -t rsa
就可以生成 id_rsa.pub 了。
coolxll
sshd 的话,是不是断了就是没有Growl通知,是否连接无法查看
休眠之后也没有自动重连,这个比较纠结的
Ksky
@Livid 我发现他会自动断掉不会重新连接,我得再研究研究。
Ksky
@coolxll 我也发现这个问题了,看看能解决不。
海涛
有没有xp版本自动链接设置?