以root身份通过SSH操作本地GitLab时需输入git用户密码的问题
问题:root身份执行Git拉取/克隆GitLab仓库时要求输入SSH密码
背景
我原本在Stack Overflow的相关问题中排查该问题,后发现这是Git本身的问题而非GitPython的问题,遂拆分出来单独问询。
我有一个必须以root身份运行的Python脚本,需与本地GitLab实例进行代码推拉操作,仓库的.git/config配置如下:
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = git@gitlab.our.instance.name:my-name/repo-name.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
问题现象
当以root身份执行git pull或git clone操作时,系统会要求输入git@gitlab.our.instance.name的密码,仿佛是通过SSH登录主机一般。需要说明的是,所有远程操作均使用SSH协议而非HTTPS。
请问这是GitLab的配置问题,还是我不了解的Git或SSH相关机制导致的?由于脚本必须以sudo运行,目前我正在尝试让git pull不以root身份执行。
给遇到类似问题的用户提示
- 若普通用户运行Git时出现
error: cannot open .git/FETCH_HEAD: Permission denied错误,可删除.git/FETCH_HEAD或修改其所有者(不再为root),即可正常执行。 - 原因:
git pull包含git fetch操作,若fetch执行失败会留下一个所有者为root:root的空FETCH_HEAD文件,普通用户无法写入该文件,导致后续操作报错。
内容的提问来源于stack exchange,提问作者Jake Mullins
相关产品推荐
相关产品推荐

