Mac下开机自动连接ssh -D

2011-11-14 22:37

Mac下开机自动连接ssh -D

by iGFW

at 2011-11-14 14:37:22

original http://igfw.tk/archives/6389

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 <span style="color: #ff0000;">9000</span>
set user <span style="color: #ff0000;">username</span>
set host <span style="color: #ff0000;">yourserver.com</span>
set password <span style="color: #ff0000;">passwd</span>
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>/Users/Ksky/Dropbox/Tools/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

重启电脑,OK。

来源http://blog.hebine.com/archives/1599.html