Ssh-Tunneling

在 Ubuntu 啟動時使用 autossh 啟動反向隧道

  • March 31, 2019

我想在系統啟動時啟動 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:為您要使用的本地埠。

引用自:https://unix.stackexchange.com/questions/479653