ssh -D命令可以为用户提供sock5代理,这也是目前国内用户最经济的fan墙方案。他有价格便宜,使用简单等诸多优点。但是每次开机都需要打开 Terminal,然后敲一句 ssh -qTfnN -D $port [email protected]$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 [email protected]$host
expect "*assword:*"

send "$passwordr"

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

文件内输入以下内容





Disabled

KeepAlive

Label
com.hebine.sshd
ProgramArguments

/Users/Ksky/Dropbox/Tools/sshd

RunAtLoad

StandardOutPath
/var/log/sshd-out.log
StandardErrorPath
/var/log/sshd-err.log

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

本文由自动聚合程序取自网络,内容和观点不代表数字时代立场

定期获得翻墙信息?请电邮订阅数字时代