启动时出现 autossh 问题

启动时出现 autossh 问题

我正在尝试在从 ubuntu 盒子启动时自动启动到我的服务器的 SSH 隧道。我有一个安装在 18 轮大卡车上的 ubuntu 盒子,并通过无线网卡联网。盒子托管一个 mysql 数据库,我试图在无线网卡连接时复制该数据库。由于我无法确定我的 IP 以及我位于多少个路由器或哪些路由器后面,因此我使用 SSH 隧道连接到我的复制服务器。我使用以下命令使其正常工作:

ssh -R 3307:localhost:3307 [email protected]

现在我希望它在盒子运行时启动,并且一直处于活动状态,因此我安装了 auto-ssh 并设置了这个小脚本:

ID=xkenneth
HOST=erdosmiller.com
AUTOSSH_POLL=15
AUTOSSH_PORT=20000
AUTOSSH_GATETIME=30
AUTOSSH_DEBUG=yes
AUTOSSH_PATH=/usr/bin/ssh
export AUTOSSH_POLL AUTOSSH_DEBUG AUTOSSH_PATH AUTOSSH_GATETIME AUTOSSH_PORT
autossh -2 -fN -M 20000 -R 3307:localhost:3306 ${ID}@${HOST}

我尝试将此脚本放入 /etc/init.d/ 中,并在 /etc/network/interfaces 中使用 post-up 命令,并将其放入 /etc/network/if-up.d/ 中。在这两种情况下,脚本都会在启动时启动,但隧道似乎没有正确建立。手动运行时,脚本可以正常工作。

答案1

如果它运行正常但未连接,我会怀疑它正在超前,没有等到网络连接。尝试通过在脚本开头添加睡眠来延迟隧道。sleep 60可能会完成这项工作,不确定您的连接建立速度有多快。

我怀疑这是因为如果第一次尝试不成功,autossh 就会放弃。摘自 README:

If the ssh session fails with an exit status of 1 on the very first 
try, autossh will assume that there is some problem with syntax or
the connection setup, and will exit rather than retrying;

请注意,它还表示您可以设置AUTOSSH_GATETIME为 0 来禁用该行为。

答案2

运行脚本时,您是否手动输入密码?如果是这样,您必须使用 SSH 密钥设置无密码登录。

相关内容