![AutoSSH 无法在启动后直接解析主机名](https://linux22.com/image/126901/AutoSSH%20%E6%97%A0%E6%B3%95%E5%9C%A8%E5%90%AF%E5%8A%A8%E5%90%8E%E7%9B%B4%E6%8E%A5%E8%A7%A3%E6%9E%90%E4%B8%BB%E6%9C%BA%E5%90%8D.png)
我想建立一个到我的家庭服务器的隧道,该隧道将在我的机器启动后立即建立。使用这个答案,我已经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 status
autossh
由于多次尝试连接,现在充斥着这些错误:
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