Mac 開機自動連線 SSH Reverse Tunnel

    在“使用 SSH tunnel, NGINX reverse proxy 自製 ngrok 服務”這篇文章中,教大家如何自製 ngrok。但是如果在家裡面的電腦重開機或重新登入之後,就必須要再次執行 ssh 指令,才能再次建立 SSH Reverse Tunnel。

    如果內部的電腦是 Mac ,可以利用下面的方法開機時自動連線並建立 SSH Reverse Tunnel。並且可以做到:

    1. 使用特定使用者帳號執行。
    2. 當 tunnel 斷線時,自動嘗試再連線。

    建立、編輯開機自動執行之 plist 檔

    在 /Library/LaunchDaemons 底下建立與編輯 server.example.client.myuser.home.plist

    sudo vi /Library/LaunchDaemons/server.example.client.myuser.home.plist

    檔案內容如下:

    <?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>server.example.client.myuser.home</string>
       <key>ProgramArguments</key>
       <array>
              <string>ssh</string>
              <string>-N</string>
              <string>-o ServerAliveInterval=15</string>
         <string>-o TCPKeepAlive=yes</string>
         <string>-o ServerAliveCountMax=20</string>
              <string>-o ExitOnForwardFailure=yes</string>
              <string>-i</string>
              <string>/Users/myuser/.ssh/id_rsa</string>
              <string>-R 3000:localhost:3000</string>
              <string>[email protected]</string>
       </array>
       <key>UserName</key>
       <string>myuser</string>
       <key>RunAtLoad</key>
       <true/>
       <key>KeepAlive</key>
       <true/>
    </dict>
    </plist>

    載入自動執行檔

    sudo launchctl load /Library/LaunchDaemons/server.example.client.myuser.home.plist

    如此就可以達成開機自動執行的目標。

    如果需要修改檔案內容,則:

    1. 先卸載:上面的指令再執行一次,但 load 改成 unload。
    2. 編輯檔案
    3. 再次載入:上面的指令再執行一次,使用 load。

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料