Git错误:"请确保您拥有正确的访问权限并且仓库存在"。

333
我正在Windows上使用TortoiseGit。当我尝试从标准的Windows Explorer上下文菜单中进行克隆时,会出现以下错误提示:
请确保您具有正确的访问权限并且存储库存在。
更具体地说,在终端中的快照如下:
git.exe clone --progress -v "git@arobotdev:\git\AlfaRobot.git" "C:\Work\AlfaRobot"
Cloning into 'C:\Work\AlfaRobot'... Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password). fatal: Could not read from remote repository.
请确保您具有正确的访问权限和存储库存在。
请问我应该怎么做才能使git正常工作?

1
尝试生成SSH密钥并添加。 - Raja Simon
使用Shell(或Windows中的Git Bash)创建SSH密钥:$ ssh-keygen -t rsa -C“youremail@example.com” - Belter
在将仓库更改为git@github.com地址以避免每次输入密码后,出现了该错误。导致这个错误的真正原因是忘记在github上添加我的公钥。 - dasWesen
在我的情况下,我需要按照此处设置配置。 - Hadi KAR
35个回答

0

我的ssh配置文件权限没问题,我需要更改文件的所有权。这对我有用:

sudo chown -R $(whoami) .

0

奇怪的是,我只在我的许多仓库中的1个中收到了这个错误。

我的问题出现在安装了新的GitHub桌面版Windows后,在此之前旧的GitHub for Win保留了~/.ssh/github_rsa~/.ssh/github_rsa.pub密钥,而新的GitHub for Win希望它位于~/.ssh/id_rsa,因此解决方案就是重命名现有的私钥和公钥:

~/.ssh/github_rsa -> ~/.ssh/id_rsa
~/.ssh/github_rsa.pub -> ~/.ssh/id_rsa.pub

之后让我再次无障碍地访问该仓库。


0

在尝试克隆远程服务器的etckeeper目录时,我偶然遇到了"请确保您拥有正确的访问权限和存储库存在"错误:

git clone normaluser@example.com:/etc

normaluser 不仅不是 /etc/ 目录的所有者(它属于用户 root),而且 /etc/.git/ 目录只能由用户 root 访问。

另一方面,用户 normalusersudo 组中,因此在远程端运行 git pull 协作的 git 进程时使用 superuser 权限解决了这个问题。

git clone --upload-pack 'sudo git-upload-pack' normaluser@example:/etc         

这里的技巧是为git clone提供选项--upload-pack 'sudo git-upload-pack'

默认情况下,当git clone成功建立与远程服务器的ssh连接时,它会生成git-upload-pack,这是一个与客户端本地git协议工具合作的git协议工具。通过告诉git-clone生成sudo git-upload-pack,它将获得从/etc/读取的所有特权。

现在,在我的情况下,我的远程服务器的sudo环境已设置为记住normalusersudo tty ticket

# this is file /etc/sudoers or some other file inside directory /etc/sudoers.d/

Defaults:normaluser !tty_tickets

# ...

为了使精心制作的git clone ...成功,必须首先获取sudo tty ticket,例如通过以用户normaluser身份执行sudo whoami并手动提供密码来获取。

如果不选择使用此sudo tty ticket解决方案,则可以利用askpass

git clone --upload-pack 'SUDO_ASKPASS=/path/to/some-askpass sudo -A git-upload-pack' normaluser@example.com:/etc  

注意 SUDO_ASKPASS=/path/to/some-askpasssudo -A ...:这些信息会告诉远程sudo调用要查询所提供的askpass可执行文件以提供密码。这可能是基于X11图形界面的ssh-askpass,该程序需要客户端X服务器和在客户端或服务器端启用的X11转发

另外,也可以提供一个自定义脚本-based 的askpass可执行文件;对于这种可执行文件的唯一要求是在stdout上返回密码。


-1

对我来说,它给出了相同的错误:

请确保您拥有正确的访问权限并且存储库存在。

一个快速的解决方法是删除 ~/.ssh/config 文件

mv config config_old && touch config

eval "$(ssh-agent -s)"

git clone your_repo

事实证明,配置文件损坏并配置了两个ID


-7
在命令提示符中输入以下命令:git config --global http.sslverify false

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接