在启动时启动autossh的问题

我试图从Ubuntu的启动时自动启动SSH隧道到我的服务器。 我有一个安装在18轮车上的ubuntu盒子,连接在一个空卡后面。 该框托pipe一个mysql数据库,我试图连接aircard时复制。 由于我永远无法确定我的IP,以及有多less路由器,我使用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/中。 在这两种情况下,脚本都会在启动时启动,但隧道似乎没有正确build立。 脚本在手动运行时工作。

如果它运行正常,但没有连接,我会怀疑它正在超越自己,而不是等到networking连接。 尝试通过在脚本开始处添加睡眠来延迟隧道。 sleep 60可能会做这项工作,不知道你的连接build立多快。

我怀疑这是因为autossh放弃,如果第一次尝试不成功。 从自述文件:

 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以禁用该行为。

当你运行脚本时,你是否手动input密码? 如果是这样,您将不得不使用SSH密钥设置无证login。