我正在尝试在我尝试启动并在虚拟机上运行的服务器中克隆私有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帖子,但他们都没有帮我解决我的问题。
任何帮助将不胜感激!谢谢!
答案 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
密钥进行连接。