本文回答如何在 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/gitcredentials 和 https://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
.