Ssh-Tunneling
在 Ubuntu 啟動時使用 autossh 啟動反向隧道
我想在系統啟動時啟動 ssh 反向隧道。下面的行讓我建立隧道很好 - 但我最終被登錄到
server
我不想要的地方,尤其是不是來自初始化腳本。/usr/bin/autossh -M 22222 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /path/to/my/key.key -R 9999:localhost:22 ubuntu@server
man autossh
說該-f
選項應該滿足我的需要:導致 autossh 在執行 ssh 之前進入後台。
但問題是,當我將命令更改為
usr/bin/autossh -f -M...
. 我已經將其作為我的初始化腳本的一部分進行了嘗試,如下所示:#! /bin/sh ### BEGIN INIT INFO ### END INIT INFO case "$1" in start) echo "Starting autossh" /usr/bin/autossh -M 22222 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /path/to/the.key -R pppp:localhost:22 user@server ;; stop) echo -n "Shutting down utossk" /usr/bin/killall -KILL autossh ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
但是我需要一個選項來把它扔到後台,如果 -f 選項對我不起作用,我該怎麼做?
您正在尋找的是
-N
選項。從 SSH 的手冊頁:-N 不執行遠端命令。這對於僅轉發埠很有用。
您的完整命令將是:
/usr/bin/autossh -M 22222 -f -N -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /path/to/my/key.key -R pppp:localhost:22 user@server
這也是我正在使用的(使用 cron’s
@reboot
),並取得了成功。替換
pppp:
為您要使用的本地埠。