Git错误:“请确保您具有正确的访问权限并且存储库存在”
Posted
技术标签:
【中文标题】Git错误:“请确保您具有正确的访问权限并且存储库存在”【英文标题】:Git error: "Please make sure you have the correct access rights and the repository exists" 【发布时间】:2014-11-13 16:39:29 【问题描述】:我在 Windows 上使用 TortoiseGit。当我尝试从标准 Windows 资源管理器的上下文菜单中克隆时,我收到此错误:
请确保您具有正确的访问权限并且存储库存在
更准确地说,终端截图如下:
git.exe 克隆 --progress -v "git@arobotdev:\git\AlfaRobot.git" "C:\Work\AlfaRobot" 克隆到“C:\Work\AlfaRobot”... 权限被拒绝,请重试。 权限被拒绝,请重试。 权限被拒绝(公钥、密码)。 致命:无法从远程存储库读取。 请确保您拥有正确的访问权限 并且存储库存在。 git 没有完全退出(退出代码 128)(21450 ms @ 19.09.2014 10:36:58)
我应该怎么做才能让 git 正常工作?
【问题讨论】:
尝试生成ssh keygen并添加 使用 Shell(或 Windows 中的 Git Bash)创建 SSH 密钥:$ ssh-keygen -t rsa -C "youremail@example.com"
在将存储库更改为 git@github.com 地址后出现该错误,因为不必一直输入密码。导致它的真正错误是忘记在 github 上添加我的公钥。
在我的情况下,我需要像here一样设置配置
【参考方案1】:
您的 git URL 可能已更改。使用以下命令更改本地目录中的 URL
对于https协议
git remote set-url origin https://github.com/username/repository.git
对于 ssh 协议
git remote set-url origin git@github.com:username/repository.git
问题可能有多种原因
-
如果问题与您的 ssh 身份有关,请通过 @onkar-m18 回答 here
如果托管服务器没有添加ssh密钥,请通过@lovekush-vishwakarma回答here
【讨论】:
我犯了一个非常常见的错误。我使用剪辑命令xclip -sel clip < ~/.ssh/id_rsa.pub
进行了复制,但是在粘贴到 github 密钥输入框中时,我使用退格键删除了最后一个换行符,这实际上改变了公钥。因此,请始终按原样复制和粘贴 ssh 公钥,而不删除最后一个换行符。
它说 No such remote 'origin'
@Menaim 您必须从 bitbucket/github 或任何其他提供商复制正确的 URL。
那里的网址是什么? @毗湿奴?【参考方案2】:
您的 ssh-agent 可能有这个问题,您的 ssh 密钥尚未添加到 ssh-agent。您必须使用终端应用以下步骤:-
$ eval "$(ssh-agent -s)"
代理 pid 5867
$ ssh-add <private-ssh-key-file-name>
// 例如。 id_rsa(不是.pub
)
输入 /home/you/.ssh/id_rsa 的密码:[] 添加的身份:/home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa)
那么它会起作用..cheers J.
【讨论】:
克隆时仍然报错:fatal: Could not read from remote repository.
感谢它为我工作我创建了与默认 id_rsa 不同的密钥,所以只需要在上面的命令 ssh-add -K ~/.ssh/id_rsa_other_project 中额外执行。
是的,这根本无法解决任何问题。将您的身份添加到 ssh 只会阻止每次都询问您的证书密码
干杯。我未能运行brew update
。当我在运行命令之前运行ssh-add
时,它起作用了。希望我不要一直重复这个。
仍然收到错误“主机密钥验证失败。致命:无法从远程存储库读取。”但添加已知主机为我修复:***.com/questions/15214977/…【参考方案3】:
在从 GIT 进行克隆时尝试使用 HTTPS 而不是 SSH,使用此 Url 进行克隆,您可以使用 Gitbase、android Studio 或任何其他工具来克隆分支。
【讨论】:
我认为这与报告的问题无关.. 哇哇哇。为什么这会起作用而不是 SSH 呢? 感谢@Jan 的宝贵时间,如果您有更好的解决方案,可以发布您的答案,如果我可以帮助您,请联系。【参考方案4】:对我来说,这是因为机器上没有 SSH 密钥。在本地检查 SSH 密钥:
$ cat ~/.ssh/id_rsa.pub
这是您的 SSH 密钥。将其添加到存储库中的 SSH 密钥中。 在 gitlab 中转到
配置文件设置 -> SSH 密钥
并添加密钥
【讨论】:
我已经添加了您提到的密钥,但仍然收到拒绝访问消息。请帮忙【参考方案5】:如果之前正常工作突然停止工作:
此问题可能是因为有时ssh-agent
在重新启动后不会持续存在。您应该检查ssh-agent
是否添加了您的密钥:
ssh-add -l -E md5
如果你得到如下输出:
The agent has no identities.
这意味着ssh-agent
丢失了您的密钥。在这种情况下,您只需再次添加身份密钥。比如:
ssh-add ~/.ssh/git_rsa
错误现在应该消失了!
【讨论】:
这发生在我为另一个帐户创建另一个 ssh 时,所以我只是将缺少的git_rsa
添加到列表中
在更改 git ssh 密钥后,我一直在为 no repo found 错误苦苦挣扎 2 小时。这个命令解决了我的问题。
这完全救了我。我已经找了好几个小时了。
确实,这个问题是在 MacOS Catalina 重启后出现的。感谢您指出问题 +1
谢谢,这个解决方案可以帮助我丢失 GitHub SSH 凭据!【参考方案6】:
Github 现在使用 url 方案
git remote set-url origin https://github.com/username/repository.git
【讨论】:
fatal: No such remote 'origin'
。我在 github 上有一个存储库,我在我的机器上使用 git init
启动了一个 git 本地存储库。
@NoahJ.Standerson 您必须使用git remote add origin https://github.com/user/repo.git
在本地存储库上设置远程“来源” - 请参阅docs.github.com/en/free-pro-team@latest/github/using-git/…
已于 2021 年 8 月 13 日移除对密码身份验证的支持。有关详细信息,请参阅 github.blog/…。【参考方案7】:
如果您在共享计算机上,使用您自己的密码或无密码私钥可能会有点过头了。更安全的选择是访问令牌:
-
转到Settings, Developer Settings, Personal access tokens
生成新令牌。
注意令牌的用途。
授予repo访问权限。
克隆 repo:
$ git clone https://<token>@github.com/<user>/<repo>.git
如果你已经克隆了 repo,你可以修改你的远程设置:
$ git remote set-url origin https://<token>@github.com/<user>/<repo>.git
$ git pull
Already up to date.
【讨论】:
你是救生员!这对我来说是最简单的解决方案。 非常感谢,我遇到了在需要 *** 才能工作的机器中克隆 repo 的问题,这是连接到 github 的唯一方法。谢谢【参考方案8】:您正在尝试通过 ssh:git@arobotdev...
克隆存储库,并且您的 SSH 密钥未在服务器上正确设置。这有多种原因:
-
您的公钥可能没有保存在用户 git 的 authorized_keys 文件中
如果 1 不为真,则您的私钥未保存在 HOMEDIR 的 .ssh/ 文件夹中。
权限设置不正确
如果以上 3 个都不正确,那么我唯一的结论是尝试:
git@arobotdev:AlfaRobot.git
假设 AlfaRobot.git 位于 git 用户的 HOMEDIR 中,而不是位于名为 git 的文件夹中,该文件夹位于用户 git 的 HOMEDIR 中。
【讨论】:
【参考方案9】:我遇到了这个问题,我发现我的系统使用了错误的 dns 地址。验证您的网络并使用
进行测试ssh -vvv git@bitbucket.org
并阅读输出消息。如果您看到“您可以使用 git 或 hg 连接到 Bitbucket”。 , 一切都好。
【讨论】:
你好@Albert,我面临同样的问题,但对于 gitlab.com。你是如何解决这个问题的? @AlexandrosBiratsis 我用其他地址替换了我的 dns。试试 opendns 或 google dns。 im 使用 github,所以修复了:ssh -vvv git@github.com 这个问题在删除 known_hosts 文件后发生【参考方案10】:我正在使用 Ubuntu
阅读了很多答案后,没有一个可以解决问题,即使我已经在我的 git 帐户中添加了 SSH 密钥,并尝试使用ssh -T git@gitlab.com
进行测试,它说Welcome <my username>
,但它仍然一直告诉我我没有访问权限。然后我找到了原因:
通常,如果您不是root
用户,则需要您使用sudo
运行每个git 命令。
在运行sudo git clone <SSH....>
时(例如)。它将在root
权限下执行,但是在创建SSH密钥时意外地我以普通用户身份运行它并将密钥保存在~/.ssh/id_rsa
中,它解析了绝对路径/home/username/.ssh/id_rsa
。在执行sudo git clone ...
时,它会在/root/.ssh/id_rsa
中查找SSH 密钥
为什么我可以确定这一点。查看 git 在哪里查找您的 SSH 密钥。运行此命令:sudo GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone <your repository in SSH>
。它会告诉你它在哪里寻找你的 SSH 密钥。
所以我建议的解决方案是:
重新创建您的 SSH 密钥(遵循此 instruction),但在第一步运行 sudo su
,那么您应该会没事的。
【讨论】:
这完全救了我。 唯一的解决方案,谈论 sudo git clone 在/root/.ssh
文件夹中搜索 SSH 密钥。那确实是我的问题。谢谢!【参考方案11】:
-
在命令下运行
open ~/.ssh
然后手动删除“known_hosts”文件
-
运行以下命令,生成新的 ssh-key
ssh-keygen -t rsa -C "your@email.com"
然后两个文件:id_rsa和id_rsa.pub会生成在.ssh目录下,复制id_rsa.pub里面的内容
登录 github --> 设置 --> SSH 和 GPC 密钥 --> 添加 SSH 密钥 --> 将复制的内容粘贴到密钥中
在命令下运行
ssh -T git@github.com
好的,可以了
【讨论】:
像魅力一样工作! 谢谢!它运作良好【参考方案12】:您可能要确认的第一件事是互联网连接。不过,互联网问题大多会说无法访问 repo。
确保您已在本地和 github 上设置 ssh。见how
确保您使用的是 ssh git 远程。如果你已经克隆了 https,只需将 url 设置为 ssh url,使用这个 git 命令git remote set-url origin git@github.com:your-username/your-repo-name.git
如果您已正确设置 ssh 但它刚刚停止工作,请执行以下操作:
eval "$(ssh-agent -s)"
ssh-add
如果您仍然遇到问题,请检查以确保您没有从 github 中删除 ssh。如果 ssh 已从 github 中删除,您可以将其添加回来。使用 pbcopy < ~/.ssh/id_rsa.pub
复制 ssh 密钥,然后转到您的 github ssh 设置并添加它。
我会建议您始终使用 ssh。对于我合作过的大多数团队,除了使用 ssh 之外,您无法访问存储库(大部分是私有的)。对于初学者来说,它可能看起来更难,但后来你会发现它更容易和更安全。
【讨论】:
【参考方案13】:rsa.pub(即生成的公钥),需要添加到 github>> settings>>ssh keys 页面。检查您是否没有在存储库设置>>部署密钥中添加此公钥。如果是这样,请从此处删除条目并添加到提到的第一个位置。
在detail 中设置公开私钥。
它会工作的!
【讨论】:
【参考方案14】:将这些行添加到您的 .get/config
文件中(感谢 @kovshenin 回答 Git Pull: Change Authentication):
[credential]
helper = wincred
【讨论】:
或 ~/.gitconfig【参考方案15】:我在将项目上传到 gitlab 时遇到此错误。我没有从 git 克隆,而是上传项目。要将您的代码推送到 gitlab,您有两种方法可以使用 ssh 或 https。如果使用 https,则必须输入 gitlab 帐户的用户名和密码。要将您的代码推送到 git,您可以使用以下代码。
第一次推送到 Git
>$ cd
>$ mkdir .ssh;cd .ssh
>$ ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
-C 参数是可选的,如果您有多个,它会在您的密钥末尾提供一个注释以将其与其他密钥区分开来。 这将创建 id_rsa(您的私钥)和 id_rsa.pub(您的公钥)。我们传递我们的公钥并保持我们的私钥 - 嗯,私密的。然后您可以在 Gitlab 的用户设置中添加您的公钥到您的帐户,以便我们最终推送。
在您的项目位置(目录)中使用以下命令
git init
它将当前目录转换为 Git 存储库。这会将 .git 子目录添加到当前目录,并可以开始记录项目的修订。
使用 https 路径推送
git push --set-upstream https://gitlab.com/Account_User_Name/Your_Project_Name.git master
使用 ssh 路径推送
git push --set-upstream git@gitlab.com:Account_User_Name/Your_project_Name.git master
— set-upstream: 告诉 git 到源的路径。如果 Git 之前推送过你当前的分支,它会记住 origin 在哪里
master:这是我在初始化时要推送到的分支的名称
【讨论】:
【参考方案16】:这是我解决此问题的方法。我在 Win7/10 上使用 Babun(mintty.exe)。当我尝试了上面提到的许多解决方案时,它们都不起作用。我意识到也许我只是使用了错误的 ssh 代理......
所以我运行echo $GIT_SSH
来查找,它显示了Plink.exe
的路径。
我真正期望的是 OpenSSH。
所以,我在~/.zshrc
文件中添加了以下一行
注意1:你也可以直接在babun中执行 注意2:如果你使用bash,那么配置文件是
.bashrc
export GIT_SSH=$(which ssh)
而且它有效!
【讨论】:
【参考方案17】:尝试使用 https 而不是 ssh。从您复制克隆 url 的项目主页中选择 https 选项。
【讨论】:
【参考方案18】:如果您通过 *** 连接到您的 git 存储库,也会发生这种情况。 确保您已连接到用于访问组织资源的 ***。
【讨论】:
【参考方案19】:使用你的 https 源而不是 ssh url
示例:
git remote add origin https://gitlab.com/user/folder.git
【讨论】:
【参考方案20】:对我来说,在断开连接后我遇到了公司 *** 的问题。
使用命令ssh -vvvT git@github.com
检查与github的连接
【讨论】:
【参考方案21】:类似问题:
当使用SSH URL
为 git 克隆 Git 时,我给了 passphrase
。
所以这个错误现在出现了,每次我在Windows 10
上打开VS Code
以下已解决问题:
1 .在CMD
中运行以下命令
setx SSH_ASKPASS "C:\Program Files\Git\mingw64\libexec\git-core\git-gui--askpass"
setx DISPLAY needs-to-be-defined
2 。退出 CMD 和 VS 代码
3 .重新打开 VS 代码
4 。 VS Code 现在显示一个弹出对话框,我们可以在其中输入passpharse
以上命令适用于 Windows 操作系统,类似说明适用于 Linux/MAC。
【讨论】:
【参考方案22】:您可以按照以下步骤操作-
检查现有密钥- 一种。 ls -al ~/.ssh
如果不存在则创建密钥- 粘贴下面的文本,替换为您的 GitHub 电子邮件地址。 一种。 ssh-keygen -t ed25519 -C "your_email@example.com" 湾。当系统提示您“输入要在其中保存密钥的文件”时,按 Enter。这接受默认文件位置。 C。在提示符处,键入安全密码。
将您的 SSH 密钥添加到 ssh-agent- 启动 SSH 代理并添加密钥
评估ssh-agent -s
ssh-add ~/.ssh/id_ed25519
将密钥添加到 Git 帐户- 拉起key并添加到Github账号
猫~/.ssh/id_ed25519.pub
导航到 Git 帐户并添加 SSH 密钥
【讨论】:
【参考方案23】:奇怪的是,我只在我的许多 repos 中的 1 个中收到了这个错误。
我的问题是在安装新的 GitHub Desktop for 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
之后让我再次访问 repo 没有问题。
【讨论】:
【参考方案24】:我犯了一个非常常见的错误。我使用clip命令xclip -sel clip < ~/.ssh/id_rsa.pub
复制,但是在粘贴到github密钥输入框中时,我使用退格删除了最后一个换行符,这实际上改变了公钥。
因此,请始终按原样复制和粘贴 ssh 公钥,而不删除最后一个换行符。
【讨论】:
【参考方案25】:我的情况: 我使用 Windows 并且我有超过 1 个用户帐户。 我收到了同样的错误,解决方法是使用管理员权限启动 git bash。
【讨论】:
【参考方案26】:对我来说,它给出了同样的错误:
请确保您拥有正确的访问权限并且存储库存在。
快速解决方法是删除 ~/.ssh/config 文件
mv config config_old && touch config
eval "$(ssh-agent -s)"
git clone your_repo
As it turned out to be the config file that was corrupt and configured with two ids
【讨论】:
【参考方案27】:如果使用 ubuntu/linux 试试这个:-
git config --global --unset credential.helper
现在通过以下步骤从 Github 帐户生成个人访问令牌:-
>>GITHUB ACCOUNT
>> Developer setting
>> Personal Access Token
>>Genrate new one with all acess & use it as your password !!
窗口用户观看以下链接:-
https://www.youtube.com/watch?v=fkKkojKYZ8U
【讨论】:
对该视频的评论说“比堆栈溢出答案更好”。那么请帮助让 SO 再次获得更好的答案。始终在此处给出答案的基本部分是一种很好的做法。因此,如果您也想为 Windows 提供解决方案,请在此处提供。您仍然可以提供链接,但这些仅供参考。【参考方案28】:进入你的 cmd 并运行:git config --global http.sslverify false
【讨论】:
以上是关于Git错误:“请确保您具有正确的访问权限并且存储库存在”的主要内容,如果未能解决你的问题,请参考以下文章
WSL+samba+git:“错误:将对象添加到存储库数据库.git/objects的权限不足” / git-clone / git-add 权限错误