使用 sudo 进行 git 克隆
- 2024-11-11 08:27:00
- admin 原创
- 26
问题描述:
当我从用户提示符下使用 ssh 进行 git clone 时,它可以正常工作。
git clone ssh://URL.com/soft.git soft_git
ssh密钥 id_rsa
位于id_rsa.pub
`/home/user/.ssh`
我的目的是执行 git,sudo
但是出现了以下错误
Cloning into '/home/user/git/soft'...
Permission denied (publickey,keyboard-interactive).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我创建了一个文件夹/root/.ssh
并将 ssh 密钥复制到其中,但出现了同样的错误
如何正确使用 sudo 执行 git。
解决方案 1:
当您使用 sudo 运行 git 时,git 将以 root 身份运行。由于 git 以 root 身份运行,因此 ssh 也以 root 身份运行。由于 ssh 以 root 身份运行,因此它尝试以 root 身份登录远程服务器。远程服务器对此不满意(应该如此!)
你需要做两件事:
将用户名放在您的 URL 中:ssh:// myusername@URL.com /soft.git。
将您的 SSH 密钥提供给 root 用户,因为它将在下面
/root/.ssh
而不是进行查找/home/user/.ssh
。(您也可以将 SSH 指向正确的密钥,但我不知道如何执行此操作,并且 SSH 对权限很挑剔。)
解决方案 2:
在我的计算机(Ubunutu 18.04)上,添加SSH_AUTH_SOCK=$SSH_AUTH_SOCK
aftersudo
和 beforegit
解决了问题:
sudo SSH_AUTH_SOCK=$SSH_AUTH_SOCK git clone git@github.com:my-github-account/my-repo.git
通常情况下,sudo 的SSH_AUTH_SOCK
环境变量不会正确设置。执行 git clone 会将SSH_AUTH_SOCK=$SSH_AUTH_SOCK
sudo 的SSH_AUTH_SOCK
环境变量设置为您想要的任何值。
这样,您就不需要.ssh
为 sudo 添加包含密钥副本的额外目录,我认为这也是其他答案所建议的。
这个相当旧的 github gist 中更详细地解释了该解决方案:
https://gist.github.com/scottjacobsen/4281310
PS:几年后我添加了一个新答案;我在 Google 上搜索了该问题的解决方案,这个 SO Q/A 是首先出现的内容之一。
解决方案 3:
通常,默认的远程 ssh 用户与您的用户名相同。如果您使用sudo
这个,则root
可能不起作用。您需要提供远程用户名。
sudo git clone ssh://username@URL.com/soft.git soft_git
通常,您可以尝试使用普通 ssh 登录远程,这样可以更轻松地解决 git ssh 问题。您将获得更好的诊断,并可以查看问题所在。
sudo ssh ssh://URL.com/
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件