Ssh

AutoSSH 無法在啟動後直接解析主機名

  • February 3, 2018

我想建立一條到我的家庭伺服器的隧道,該隧道將在我的機器啟動後立即建立。使用這個答案,我在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 james@my.host.name

[Install]
WantedBy=multi-user.target

有沒有辦法解決這個問題?

道歉,但事實證明有一個我沒有註意的錯誤:

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會掛起。

我在我的問題中包含的錯誤仍然存在,但是我認為這沒什麼好擔心的,因為當服務首次開始執行時,網路連接可能沒有正確建立。

代替

After=network.target

After=network-online.target

引用自:https://unix.stackexchange.com/questions/421659