Mac下开机自动连接ssh -D
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。