在 cron/systemd timer 任务中的 git 认证

在 cron/systemd timer 任务中的 git 认证

本文回答如何在 systemd timer 任务或者 cron 任务中进行 git 认证,方便进行 git pull/push 操作。

首先,不推荐 ssh-key 方式,不推荐,因为安全性和粒度控制不够。设置无 passphrase 的私钥(不安全),无法分 repo 控制权限。

推荐使用 https 配合 GitHub Personal Access Token 的方式,主要使用 gitcredentials - Providing usernames and passwords to Git,参考文档链接 https://git-scm.com/docs/gitcredentialshttps://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

首先在 https://github.com/settings/apps 生成 Personal Access Token (PAT),建议使用细粒度的 token,降低泄露 token 的损失。

其次在需要操作的 repo 根目录进行设置

# 使用文件的方式储存认证信息
git config --local credential.helper store
# 使用路径来区分不同的认证信息
git config --local credential.useHttpPath true

设置完毕后手动操作一次,保存好 repo 的认证信息即可,认证信息储存在 ~/.git-credential.