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_configssh

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

以前は、これらのエラーの1つだけを表示してからautossh中断しました。

質問に含まれるエラーは引き続き発生しますが、サービスが最初に実行されたときにネットワーク接続が正しく設定されていない可能性があるため、心配する必要はありません。

答え2

変える

After=network.target

そして

After=network-online.target

関連情報