当我从用户提示符中使用ssh进行git clone时,它可以正常工作。
git clone ssh://URL.com/soft.git soft_git
ssh键id_rsa
和id_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。
答案 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/