システムサービスを実行すると、ホストキーの検証が失敗します。

システムサービスを実行すると、ホストキーの検証が失敗します。

Pythonスクリプトをサービスとして実行する予定です。

[Unit]
Description=Description
Wants=network-online.target
After=multi-user.target network.target network-online.target

[Service]
Type=simple
Restart=always
ExecStart=/path/to/python /path/to/script.py

[Install]
WantedBy=multi-user.target

スクリプトがリモートコンピュータに接続されます。/path/to/python /path/to/script.pyシェルでスクリプトを実行すると正常に動作します。エラーはありません。ただし、サービスの実行中に予想される結果は表示されません。

状態を確認すると、次のような重複項目が表示されます。

Jul 2 00:00:41 user systemd[1]: Description
Jul 2 00:00:42 user python[12121212]: Pseudo-terminal will not be allocated because stdin is not a terminal.
Jul 2 00:00:42 user python[12121212]: Host key verification failed.

ベストアンサー1

SSH接続は通常、「初回使用時の信頼」の概念に基づいています。したがって、初めて接続すると、リモートホストの指紋(キー)を信頼するかどうかを尋ねるメッセージが対話的に表示されます。

これは明らかに非対話型サービスには適用されません。sudoユーザー(ルート、サービスファイルから?)でサービスを実行し、リモートサーバーに接続してみてください。鍵を信頼すると、鍵が保存され、~/.ssh/known_hostsサービスが実行されます。

(あなたのサービスでそれを使用している場合は、このファイルをロードするためのparamiko呼び出しが必要ですload_system_host_keys()。)

おすすめ記事