AutoSSH 无法在启动后直接解析主机名

AutoSSH 无法在启动后直接解析主机名

我想建立一个到我的家庭服务器的隧道,该隧道将在我的机器启动后立即建立。使用这个答案,我已经autossh在服务中设置了命令,该服务已设置为在启动时运行。我希望隧道能够通过互联网工作,并有一个动态 DNS 服务来适应这一点。

如果我手动运行该服务,隧道将成功连接。当服务在启动后自动启动时会出现此问题。服务启动正常,但是由于无法解析我的主机名,因此未建立与我的服务器的连接。

ssh child pid is 1413
ssh: Could not resolve hostname my.host.name: Temporary failure in name resolution
ssh exited with error status 255; restarting ssh

我的服务文件如下:

[Unit]
Description=Creates tunnel to server
After=network.target

[Service]
User=james
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -M 0 -o "StrictHostKeyChecking=no" -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NR 3030:localhost:22 [email protected]

[Install]
WantedBy=multi-user.target

有什么办法可以解决这个问题吗?

答案1

抱歉,但事实证明有一个我没有注意到的错误:

Error: remote port forwarding failed for listen port 3030

该错误将在错误之后显示could not resolve hostname

虽然我不确定是什么导致了错误,但我已经设法通过添加ExitOnForwardFailure yes到我的/etc/ssh/ssh_config.ssh当抛出该错误时,这将退出会话。

似乎基础ssh会话由于此错误而挂起。这阻止了autossh尝试重新连接到我的服务器。通过对我的配置进行此更改,现在将在抛出该错误时autossh尝试重试连接。ssh

systemctl statusautossh由于多次尝试连接,现在充斥着这些错误:

starting ssh (count 16)
ssh child pid is 2463
Error: remote port forwarding failed for listen port 3030
ssh exited with error status 255; restarting ssh
starting ssh (count 17)
ssh child pid is 2473
Error: remote port forwarding failed for listen port 3030
ssh exited with error status 255; restarting ssh
starting ssh (count 18)
ssh child pid is 2481

而以前只会显示这些错误之一,之后autossh就会挂起。

我在问题中包含的错误仍然会发生,但是我认为这没有什么值得担心的,因为当服务首次开始运行时,网络连接可能尚未正确建立。

答案2

代替

After=network.target

After=network-online.target

相关内容