我想在系统启动时启动 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:
为您要使用的本地端口。