web-dev-qa-db-ja.com

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

これを回避する方法はありますか?

2
Top Cat

申し訳ありませんが、私が注意を払っていなかったエラーがあったことが判明しました:

Error: remote port forwarding failed for listen port 3030

このエラーは、could not resolve hostnameエラーの後に表示されます。

エラーの原因はわかりませんが、ExitOnForwardFailure yes/etc/ssh/ssh_configを追加することで回避できました。これにより、エラーがスローされたときにsshセッションが終了します。

このエラーが原因で、基になるsshセッションがハングしていたようです。これにより、autosshがサーバーに再接続しようとするのを防ぎました。この設定の変更により、autosshは、エラーがスローされたときにssh接続を再試行しようとします。

autosshが複数回接続を試みると、systemctl statusはこれらのエラーで溢れかえります。

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

以前は、これらのエラーの1つだけが表示され、その後autosshがハングしていました。

質問に含めたエラーはまだ発生しますが、サービスが最初に実行されたときにネットワーク接続が適切に確立されていない可能性があるため、これは心配する必要はないと思います。

0
Top Cat

交換

After=network.target

After=network-online.target
0
Hauke Laging