在 Ubuntu 中启动时使用 autossh 启动反向隧道

在 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 选项对我不起作用,我该怎么做?

答案1

您正在寻找的是-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 一起使用@reboot),并取得了成功。
替换pppp:为您要使用的本地端口。

相关内容