Quantcast
Channel: dipplum.com » mac
Viewing all articles
Browse latest Browse all 2

自动连接ssh -D的launchd配置

0
0

背景

与Ubuntu的upstart类似,Mac OS上提供了launchd作为后台服务的管理程序。ssh -D命令可以为用户提供sock5代理,但是每次访问网络之前,都要打开Terminal手动运行ssh命令是一件很烦的事情。加上网络条件不好,ssh频繁退出,就更烦了。Linux下有autossh+upstart/init可以选择,Mac OS下就需要借助launchd了

配置Mac到远程ssh服务器的自动登录

为了将ssh -D变成launchd管理的后台服务,配置ssh自动登录是必须的。Mac下过程与Linux不太一样,首先打开Terminal,生成用户ssh证书:

sudo su
ssh-keygen
cat /var/root/.ssh/id_rsa.pub

然后把公钥上传到ssh服务器。注意:Mac OS下root的HOME被设置在了/var/root下。

ssh EXAMPLE.COM mkdir .ssh
scp id_rsa.pub EXAMPLE.com:.ssh/authorized_keys
 
# 测试公钥认证是否成功
ssh -o BatchMode=yes EXAMPLE.COM

生成launchd格式的plist文件

将下述ssh-d.plist文件放在/Library/LaunchDaemon/目录下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
      <string>localdomain.localhost.ssh-d</string>
    <key>ProgramArguments</key>
      <array>
        <string>/usr/bin/ssh</string>
        <string>-o</string>
        <string>BatchMode=yes</string>
        <string>-o</string>
        <string>CheckHostIP=no</string>
        <string>-o</string>
        <string>StrictHostKeyChecking=no</string>
        <string>-D</string>
        <string>1080</string>
        <string>-i</string>
        <string>/var/root/.ssh/id_rsa</string>
        <string>-vvvNnT</string>
        <string>root@EXAMPLE.com</string>
      </array>
    <key>KeepAlive</key>
      <true/>
    <key>RunAtLoad</key>
      <true/>
    <key>StandardOutPath</key>
      <string>/var/log/ssh-d-out.log</string>
    <key>StandardErrorPath</key>
      <string>/var/log/ssh-d-err.log</string>
  </dict>
</plist>

然后运行下面的命令后台启动ssh -D:

launchctl load /Library/LaunchDaemon/ssh-d.plist

如果出错需要调试,ssh进程的标准输出和标准错误输出保存在/var/log目录下的ssh-d-out.log和ssh-d-err.log文件中。如果一切正常,则配置完毕,以后Mac启动后,ssh -D进程会自动启动,ssh退出后,launchd也会自动生成一个新的进程。

与autossh集成

如果通过fink和MacPorts或者其他方法安装了autossh,可以修改上述脚本中的ssh程序的路径为autossh的路径。并将autossh的参数按格式加入plist文件,这样,也能享受到autossh提供的隧道假死后自动重启功能。

延伸阅读


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images