git - 如何使用 Ubuntu (systemd)、Github 和 SSH key 在启动时从 git 中提取

标签 git ubuntu github

我已经设置好了,所以我使用 ssh key 在 Github 上进行身份验证。我已经尝试了一切,它似乎正在工作。所以现在我希望我的应用程序在每次计算机启动时都运行,所以我创建了以下 systemd 配置......

[Unit]
Description=Job that runs your user script

[Service]
WorkingDirectory=/.../web/site
ExecStart=npm start
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

一切似乎都正常了。现在我想在每次启动之前 pull ,所以我改为......
[Unit]
Description=Job that runs your user script

[Service]
WorkingDirectory=/.../web/site
ExecStart=git pull
ExecStart=npm start
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

但现在它失败了......
Mar 08 05:45:21 debdev systemd[1]: Starting Job that runs your user script...
Mar 08 05:45:21 debdev git[731]: Host key verification failed.
Mar 08 05:45:21 debdev git[731]: fatal: Could not read from remote repository.
Mar 08 05:45:21 debdev git[731]: Please make sure you have the correct access rights
Mar 08 05:45:21 debdev git[731]: and the repository exists.
Mar 08 05:45:21 debdev systemd[1]: node-site.service: Main process exited, code=exited, status=1/FAILURE
Mar 08 05:45:21 debdev systemd[1]: node-site.service: Failed with result 'exit-code'.
Mar 08 05:45:21 debdev systemd[1]: Failed to start Job that runs your user script.

我错过了什么?是因为我的 SSH key 在我的用户名下吗?我可以制作一个“root”ssh key 吗?

最佳答案

这个:

Host key verification failed.

是验证远程存储库的问题,在你的情况下是 Github。这很可能是因为当系统启动时,您是以 root 而不是您的普通用户运行的,这就是您设置 key 对时的身份。要解决此问题,您可以直接指定身份文件。要以一次性的方式执行此操作,并且不为您的根添加第二个身份文件(您可以这样做,也不需要太多努力,就像您为您的用户所做的那样),您可以改为运行
ssh-agent bash -c 'ssh-add /path/to/id_rsa; git pull'

为了在您修复此问题时不重启/重启服务,我建议您尝试修复 git pull以 root 身份执行命令,然后在您的 systemd 中尝试。 .

关于git - 如何使用 Ubuntu (systemd)、Github 和 SSH key 在启动时从 git 中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60584853/

相关文章:

git commit - 一个困惑

git - 如何在 Git 工作副本中列出所有未版本化的文件和目录?

Git:如何删除代理

linux - linux下如何解锁用户sudo的密码?

angular - StackBlitz 与 github 同步 - 从 StackBlitz 上传到 github

github - TravisCI 中的链接构建

git - 'git branch -r' 和 'git remote show origin' 的区别

ubuntu - 标准输入的重定向似乎改变了 Dyalog APL 程序的行为(当使用名为 dyalog 的符号链接(symbolic link)调用 mapl 时)

C++ 程序意外终止

ruby-on-rails - Git 标记和 rails gemfile