由于公钥问题,需要帮助克隆GitHub存储库

时间:2017-11-05 16:55:49

标签: linux git github ssh

我正在尝试在我尝试启动并在虚拟机上运行的服务器中克隆私有GitHub存储库。

无论我做什么,我都会收到以下错误:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我尝试了很多东西。对于初学者,我确保按照GitHub's tutorial正确制作了我的rsa密钥。我也确定在~/.ssh/id_rsa.pub找到的公开rsa密钥已正确复制到我的GitHub帐户的ssh密钥。

我在~/.ssh/config的配置文件如下所示:

Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa

我曾尝试克隆公共存储库和私有存储库,但两者都无法正常工作。

当我去克隆存储库时,我正在执行以下命令:

sudo git clone git@github.mit.edu:<GitHub Name>/<Repo Name>.git

如果我执行不带sudo的命令,我会收到以下错误:

fatal: could not create work tree dir '<Repo Name>'.: Permission denied

当我完成所有这些操作时,我在Python虚拟环境中。这有什么不同吗?

我一直在阅读与此事相关的Stack Overflow帖子,但他们都没有帮我解决我的问题。

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:3)

您正在使用sudo,因此Git正在使用用户root的ssh密钥。

要完成这项工作,您必须在没有sudo的情况下调用git。

  

因此,当我不使用sudo时,我得到了致命的错误:无法创建工作   tree dir'cardlearning':Permission denied

确保当前用户在您正在执行克隆的目录中具有写入权限。

您无法克隆到现有目录中,因此可以采用以下方法:

$ sudo mkdir tmp
$ sudo chown $USER: tmp
$ git clone git@github.mit.edu:<GitHub Name>/<Repo Name>.git tmp/cardlearning
$ mv tmp/cardlearning ./cardlearning
$ rmdir tmp

答案 1 :(得分:1)

检查您的用户是否有权写入您所在的目录。

或执行

git clone git@github.mit.edu:<GitHub Name>/<Repo Name>.git ~/myRepo

将其放在主目录的myRepo子目录中。

使用~引用路径时,请勿使用sudo编辑ssh配置,因为您最终可能会编辑root用户的ssh首选项,而不是您的用户。同样,请勿使用sudo克隆存储库,因为它会尝试使用root用户的ssh密钥进行连接。