使用sudo制作git clone

时间:2016-01-21 06:58:01

标签: linux git ssh sudo

当我从用户提示符中使用ssh进行git clone时,它可以正常工作。

git clone ssh://URL.com/soft.git soft_git

ssh键id_rsaid_rsa.pub位于/home/user/.ssh

我的目的是使用sudo执行git,但我收到以下错误

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。

3 个答案:

答案 0 :(得分:6)

当你使用sudo运行git时,git将以root身份运行。因为git以root身份运行,所以ssh以root身份运行。因为ssh以root身份运行,所以它尝试以root用户身份登录到远程服务器。远程服务器不适合这个(应该是!)

您需要做两件事:

  • 将用户名放在您的网址中:ssh://myusername@URL.com/soft.git。

  • 向root用户提供SSH密钥,因为它将在/root/.ssh而不是/home/user/.ssh下查看。 (您也可以将SSH指向正确的密钥,但我不知道如何执行此操作,并且SSH对权限很挑剔。)

答案 1 :(得分:1)

在我的计算机 (Ubunutu 18.04) 上,在 SSH_AUTH_SOCK=$SSH_AUTH_SOCK 之后和 sudo 之前添加 git 解决了问题:

sudo SSH_AUTH_SOCK=$SSH_AUTH_SOCK git clone git@github.com:my-github-account/my-repo.git 

通常情况下,sudo 的 SSH_AUTH_SOCK 环境变量不会正确设置。使用 SSH_AUTH_SOCK=$SSH_AUTH_SOCK 执行 git clone 会将 sudo 的 SSH_AUTH_SOCK 环境变量设置为适合您的任何值。

这样,您就不需要为 sudo 添加额外的 .ssh 目录以及您的密钥副本,我认为这是其他答案之一所建议的。

在这个相当古老的 github gist 中更全面地解释了解决方案: https://gist.github.com/scottjacobsen/4281310

附言几年后我添加了一个新答案;我在谷歌上搜索了这个问题的解决方案,这个 Q/A 是最先出现的问题之一。

答案 2 :(得分:0)

通常,默认的远程ssh用户与您的用户名相同。如果您使用的是sudo,那么这将是root,这可能不会起作用。您需要提供远程用户名。

sudo git clone ssh://username@URL.com/soft.git soft_git

通过尝试使用普通ssh登录到远程,通常可以更轻松地解决git ssh问题。你会得到更好的诊断,可以看出出了什么问题。

sudo ssh ssh://URL.com/