运行系统服务时主机密钥验证失败

运行系统服务时主机密钥验证失败

我打算将 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在 shell 中运行脚本时,它工作正常。没有错误。但是当服务运行时,我没有看到预期的结果。

在检查状态时,我看到以下重复内容:

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以用户身份运行服务(root,从您的服务文件?)并连接到远程服务器。一旦您信任该密钥,该密钥就会被保存~/.ssh/known_hosts并且您的服务应该运行。

(如果您的服务使用paramiko,它希望调用load_system_host_keys()来加载此文件。)

相关内容