2019年5月

以前一段时间在openwrt上配置了autossh,手动启动它测试的时候一切正常。但是有一次openwrt重启了,autossh作为自动启动服务在开机启动时,老是在日志里报:

 user.info autossh[pid]: ssh exited with error status 1; restarting ssh

而且对端服务器一直报错:

sshd[pid]: Connection reset by [IP] port [port] [preauth]

就这样一直报错,连接不成功。但是手工重启一下autossh服务又一切正常了。一直比较奇怪。后来在
https://github.com/openwrt/packages/issues/5559
看到有朋友和我一样的问题,找到了原因所在。

autossh在开机启动的时候,找不到$HOME环境变量,默认从根目录下的.ssh中寻找known_hosts 文件进行主机认证。但是根目录下没有这个文件夹。就造成连接不成功了。所以,解决办法就在/etc/init.d/autossh 文件里手工把环境变量写进去。

export HOME=/root

这样,重启的时候就可以自动连接了。至于为什么启动的时候找不到这个环境变量,就没有深究了。