![在启动时通过 systemd 服务从 Github 存储库中提取最新更改](https://linux22.com/image/173314/%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E9%80%9A%E8%BF%87%20systemd%20%E6%9C%8D%E5%8A%A1%E4%BB%8E%20Github%20%E5%AD%98%E5%82%A8%E5%BA%93%E4%B8%AD%E6%8F%90%E5%8F%96%E6%9C%80%E6%96%B0%E6%9B%B4%E6%94%B9.png)
当我的设备(Raspberry Pi Zero W)启动时,我启动一个 systemd 服务,负责执行一个名为 的脚本start.sh
,该脚本又运行我的main.py
Python 脚本(以及其他事情)。
我想start.sh
在运行之前从 Github 中提取更改main.py
。我的第一次尝试只是添加一个git pull
,但我看到了错误Host key verification failed.
我假设这与 systemd 服务访问 SSH 密钥以进行 Github 身份验证有关,但我不知道如何根据需要为 systemd 启用 SSH。
感谢您的任何建议。
答案1
它可能会提示接受远程服务器的主机密钥 - 您可以先直接运行它以确保该条目位于 中known_hosts
吗?还要确认User
您的部分中的内容[Service]
是否正确。
答案2
我找到了一种方法来实现我想要实现的目标。
Github 提供了创建的能力部署密钥,它可以提供对存储库的只读 SSH 访问。
我创建了一个没有密码的新密钥 SSH,将其作为只读部署密钥添加到我的存储库中,现在可以使用启动时从 systemd 服务触发的脚本自动从存储库中提取更改。
值得注意的是,没有密码短语的 SSH 密钥的安全性比受密码短语保护时要低得多,但这是我愿意做出的妥协,因为该密钥仅提供只读访问权限。
答案3
Host key verification failed.
通常意味着另一端服务器的身份已更改,或者您没有将主机密钥添加到您的~/.ssh/known_hosts
文件中。
尝试从与运行此脚本的用户相同的存储库中提取数据。或者您可以尝试使用 删除旧的主机密钥ssh-keygen -R [hostname/ip]
。
如果您使用 ssh-keys 进行身份验证,还请确保 ssh 密钥位于~/.ssh/
运行此脚本的用户的文件夹中。