当使用cron job推送到git时出现"fatal: could not read Username"错误

5

嘿,我正在尝试在Mac上使用定时任务将代码推送到git。我使用crontab -e编辑我的crontab文件,并在其中添加以下内容:

* 12 * * 1 ~/Dropbox/MD/sync.sh
* 12 * * 5 ~/Dropbox/MD/sync.sh

脚本内容如下:
#!/bin/bash

cd ~/Dropbox/MD
/usr/bin/git add .
/usr/bin/git commit -m "Docs auto update"
/usr/bin/git push origin master

然而该命令失败,当我运行mail时,我可以检查到错误消息是:fatal: could not read Username for 'https://github.com': Device not configured。如何解决这个问题?如果我从终端手动运行命令,就没有任何问题,也不需要输入用户凭据。

非常感谢您提供的任何提示!谢谢!


https://dev59.com/kFkS5IYBdhLWcg3wKzqq#71895014 - Muhammad Ali
2个回答

6

在自动化Git任务时建议使用SSH密钥。按照以下步骤设置具有推送访问权限的SSH密钥:

  1. 获取用户的SSH密钥(或生成一个: ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  2. 复制公钥内容(cat ~/.ssh/id_rsa.pub
  3. 前往github.com上的项目
  4. 进入项目设置
  5. 选择 部署密钥 (https://github.com/user/project/settings/keys)
  6. 选择添加部署密钥
  7. 添加您的公钥内容
  8. 勾选 允许写入访问
  9. 选择 添加密钥

请注意,这仅适用于使用以下远程克隆的存储库:git@github.com:user/project.git

可以通过以下步骤更新远程:

  1. 转到服务器上的存储库文件夹
  2. 运行 git remote remove origin
  3. 运行 git remote add origin git@github.user/project.git

太好了,谢谢!在第一步中生成用户的SSH密钥时,电子邮件是GitHub帐户的电子邮件吗? - Kex
不需要,电子邮件并不是很重要。可以使用任何电子邮件地址,这有助于在将公钥添加到 GitHub 时跟踪其来源。@Kex - MaartenDev

1
如果我从终端手动运行命令,我就没有问题,并且不需要用户凭据。如果您的cron作业不是以您的身份运行,则会出现这种情况。Git将检查git config credential.helper的值,以查看github.com的用户名/密码是否被缓存(通常为OSX Keychain for Mac)。例如,如果cron作业是以root身份运行的,则不会配置该设置。注意:检查位于$ HOME / Library / LaunchAgents中的plist是否更好,因为launchd可能会替换cron。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接