为了方便起见,我使用了别名ssh
,autossh -M0
效果很好。
但是它总是错误退出,这会导致我的脚本出现问题。
例如
ssh me@myserver 'true' # equivalent to: autossh -M0 me@myserver 'true'
echo $? # 1
我该如何解决?
(脚本中的解决方法,使用它/usr/bin/ssh
代替ssh
。但如果可能的话,我想解决这个问题。)
答案1
从手册页:
有一个“起跑门”时间。如果第一个 ssh 进程在启动后的最初几秒钟内失败,autossh 会假设它从未“走出起始门”,然后退出。这是为了处理初始失败的身份验证、连接等。该时间默认为 30 秒,并且可以调整(请参阅下面的 AUTOSSH_GATETIME 环境变量)。
因此,将 AUTOSSH_GATETIME 设置为零可以解决这个问题:
AUTOSSH_GATETIME=0 ssh me@myserver 'true'
echo $? # 0
如果您没有输入密码或密码短语,您还可以使用标记-f
(autossh
您可以将其添加到别名中):
ssh -f me@myserver 'true'
echo $? # 0