我很想将 autossh 设置为在启动时运行,并将其添加到/etc/rc.local
。
该命令有效:
autossh -i /root/.ssh/id_rsa -R 2522:localhost:22 user@address
但如果我添加-f
选项
autossh -f -i /root/.ssh/id_rsa -R 2522:localhost:22 user@address
ssh 会话尚未启动。
如您所见,我对我的身份文件使用了绝对路径,因此这似乎与此处所述的问题不同:后台的 autossh 不起作用
从/var/log/syslog
:
Oct 18 11:08:39 raspberrypi autossh[2417]: starting ssh (count 1)
Oct 18 11:08:39 raspberrypi autossh[2417]: ssh child pid is 2418
Oct 18 11:08:39 raspberrypi autossh[2417]: ssh exited with status 0; autossh exiting
我在树莓派上将它与 debian wheezy 一起使用,autossh 版本为 1.4c。
可能是它将-f
选项传递给了 ssh 吗?
答案1
当您不使用 启动 autossh 时-f
,您将获得一个 shell。当 shell 运行时,您将获得端口转发。注销后,ssh 将以退出代码 0 终止,并且 autossh 知道它不需要再次启动 ssh 会话。
当您使用 启动 autossh 时-f
,它-f
也会传递给 ssh。然后 ssh 在后台运行,不会为您提供 shell。由于您没有指定任何其他标志或远程命令,ssh 立即以状态 0 退出(无事可做),并且 autossh 不会重新启动它。
只需添加-N
选项即可避免这种情况:
-N Do not execute a remote command. This is useful for just forwarding
ports (protocol version 2 only)
像这样:
autossh -f -N -i /root/.ssh/id_rsa -R 2522:localhost:22 user@address