Git错误:“请确保您拥有正确的访问权限并且存储库存在”

时间:2014-09-19 06:45:20

标签: git github tortoisegit

我在Windows上使用TortoiseGit。当我尝试从标准Windows资源管理器的上下文菜单中克隆时,我收到此错误:

  

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

更准确地说,终端的快照如下:

  

git.exe clone --progress -v" git @ arobotdev:\ git \ AlfaRobot.git" " C:\工作\ AlfaRobot"
  
  克隆到' C:\ Work \ AlfaRobot' ...
  许可被拒绝,请再试一次。
  许可被拒绝,请再试一次。
  权限被拒绝(公钥,密码)   致命:无法从远程存储库中读取   
  请确保您拥有正确的访问权限   存储库存在。
  
  git没有干净地退出(退出代码128)(21450 ms @ 19.09.2014 10:36:58)

如何让git正常工作?

31 个答案:

答案 0 :(得分:50)

您的git网址可能已更改。使用以下命令更改本地目录中的URL

git remote set-url origin git@yourGitUrlHere

答案 1 :(得分:40)

问题可能在于您的ssh-agent,您的ssh密钥没有添加ssh-agent。您必须使用终端应用以下步骤: -

  1. $ eval" $(ssh-agent -s)"

    代理人pid 5867

  2. $ ssh-add

    输入/home/you/.ssh/id_rsa的密码:[] 身份补充:/home/you/.ssh/id_rsa(home/you/.ssh/id_rsa)

  3. 然后它将起作用..查看J。

答案 2 :(得分:23)

对我来说,这是因为机器上没有SSH密钥。在本地检查SSH密钥:

$ cat ~/.ssh/id_rsa.pub

这是您的SSH密钥。将其添加到存储库中的SSH密钥 在gitlab中转到

  

个人资料设置 - > SSH密钥

并添加密钥

答案 3 :(得分:19)

尝试从GIT进行克隆时尝试使用HTTPS而不是SSH,请使用此URL进行克隆,您可以使用Gitbase,Android Studio或任何其他工具来克隆分支。 enter image description here

答案 4 :(得分:7)

您正尝试通过ssh:git@arobotdev...克隆存储库,并且未在服务器上正确设置SSH密钥。这有多种原因:

  1. 您的公钥可能未保存在user git
  2. 的authorized_keys文件中
  3. 如果1不成立,则您的私钥不会保存在您的HOMEDIR的.ssh /文件夹中。
  4. 未正确设置权限
  5. 如果以上所有3都是不真实的,那么我唯一的结论就是尝试: git@arobotdev:AlfaRobot.git 假设AlfaRobot.git在git用户的HOMEDIR中,而不在名为git的文件夹中,该文件夹位于用户git的HOMEDIR中。

答案 5 :(得分:7)

如果它以前工作过,突然停止工作:

之所以会出现此问题,是因为有时ssh-agent在重新启动后并不持久。您应该检查ssh-agent是否已添加密钥:

ssh-add -l -E md5

如果您得到如下输出:

The agent has no identities.

这意味着ssh-agent丢失了密钥。在这种情况下,您只需要再次添加身份密钥。像这样:

ssh-add ~/.ssh/git_rsa

该错误现在应该消失了!

答案 6 :(得分:5)

需要在github上添加rsa.pub(即生成的公钥)>>设置>> ssh键页面。请检查您是否在存储库设置>>中添加了此公钥。部署密钥。如果是这样,请从此处删除条目并添加到提到的第一个位置。

detail中设置pub-private键。

它会起作用!

答案 7 :(得分:4)

如果您在共享计算机上,则使用自己的密码或无密码的私钥可能会过大。安全的选项是访问令牌:

  1. 转到Settings, Developer Settings, Personal access tokens
  2. 生成新令牌。
  3. 请注意令牌的用途。
  4. 授予回购访问权限。
  5. 克隆存储库:
$ git clone https://<token>@github.com/<user>/<repo>.git

如果您已经克隆了仓库,则可以修改远程设置:

$ git remote set-url origin https://<token>@github.com/<user>/<repo>.git
$ git pull
Already up to date.

答案 8 :(得分:3)

Github现在使用url方案

git remote set-url origin https://github.com/username/repository.git

答案 9 :(得分:2)

尝试使用https而不是ssh。从项目主页选择https选项,从中复制克隆URL。

答案 10 :(得分:2)

将这些行添加到.get/config文件中(感谢@kovshenin回答Git Pull: Change Authentication):

[credential]
    helper = wincred

答案 11 :(得分:2)

以下是我如何解决这个问题。我在Win7 / 10上使用Babun(mintty.exe)。当我尝试了上面提到的许多解决方案时,它们都不起作用。我意识到也许我只是使用了错误的ssh代理... 所以我运行echo $GIT_SSH查找,它显示了Plink.exe的路径。 我实际期望的是OpenSSH。

因此,我将以下单行添加到~/.zshrc文件

  

注1:你也可以直接在babun执行它   注意2:如果您使用bash,则配置文件为.bashrc

export GIT_SSH=$(which ssh)

它有效!

答案 12 :(得分:1)

  1. 您可能要确认的第一件事是互联网连接。不过,互联网问题通常会说无法访问该存储库。

  2. 确保已在本地和github上都设置了ssh。参见how

  3. 确保您正在使用ssh git remote。如果您克隆了https,则只需使用此git命令git remote set-url origin git@github.com:your-username/your-repo-name.git

  4. 将url设置为ssh url。
  5. 如果您已经正确设置了ssh,但是它刚刚停止工作,请执行以下操作:

    • eval "$(ssh-agent -s)"
    • ssh-add

    如果仍然存在问题,请检查并确保尚未从github中删除ssh。如果ssh已从github中删除,则可以将其重新添加。使用pbcopy < ~/.ssh/id_rsa.pub复制ssh密钥,然后转到github ssh设置并添加它。

  

我建议您始终使用ssh。对于与我合作过的大多数团队,除非您使用ssh,否则您将无法访问该存储库(大多数为私有存储库)。对于初学者来说,它似乎更难一些,但是以后您会发现它更容易且更安全。

答案 13 :(得分:1)

类似问题:

当使用 passphrase for git 克隆 Git 时,我给了 SSH URL
因此,每次我在 VS Code

上打开 Windows 10 时,现在都会出现此错误

下面修复了问题:

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 Code

3 .重新打开 VS Code

4。 VS Code 现在显示一个弹出对话框,我们可以在其中输入 passpharse

以上命令适用于 Windows 操作系统,类似的说明适用于 Linux/MAC。

答案 14 :(得分:1)

对我来说,在断开正常工作后,我遇到了VPN公司的问题。

使用命令ssh -vvvT git@github.com

检查与github的连接

答案 15 :(得分:0)

  1. 运行下面的命令
open ~/.ssh

然后手动删除“known_hosts”文件

  1. 运行下面的命令,生成新的 ssh-key
ssh-keygen -t rsa -C "your@email.com"

然后拖拽文件: id_rsa 和 id_rsa.pub 会在 .ssh 目录中生成,复制 id_rsa.pub 中的内容

  1. 登录github --> 设置 --> SSH 和 GPC 密钥 --> 添加 SSH 密钥 --> 将复制的内容粘贴到密钥中

  2. 在命令下运行

ssh -T git@github.com

好的,可以了

答案 16 :(得分:0)

我的情况: 我使用 Windows 并且我有 1 个以上的用户帐户。 我收到了同样的错误,解决方法是使用管理员权限启动 git bash。

答案 17 :(得分:0)

当我的计算机上具有无效的RSA SSH密钥和有效的ED25519 SSH密钥时,我遇到了此问题。我相信Gitlab正在检查RSA密钥,然后在检查ED25519密钥之前失败并停止了。

我通过删除设备上的两个密钥并生成新的RSA SSH并提供了gitlab来解决此问题。

答案 18 :(得分:0)

切换到使用https即可。 首先切换到https而不是ssh键。 git remote set-url origin

然后它将要求git用户名和密码。

答案 19 :(得分:0)

另一个问题可能是您的互联网连接。也许显而易见,但花了我几分钟才弄清楚我的无线网络已经关闭了。)

答案 20 :(得分:0)

我犯了非常常见的错误。我使用剪辑命令xclip -sel clip < ~/.ssh/id_rsa.pub复制,但是在粘贴到github键输入框中时,我使用退格键删除了最后一个换行符,这实际上更改了公钥。

因此,请始终按原样复制并粘贴ssh公钥,而不删除最后一个换行符。

答案 21 :(得分:0)

添加ssh密钥对我有用。您可以在Mac上使用ssh-keygen命令创建ssh密钥。您应该能够在YourRepository上看到“部署密钥”菜单。“设置”不要忘记选中“允许写访问权限”选项。

deploy keys menu screenshot

答案 22 :(得分:0)

将项目上传到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

-设置上游:告诉git原始路径。如果Git先前已推送您当前的分支,它将记住原点在哪里

master :这是初始化时要推送到的分支的名称

答案 23 :(得分:0)

我正在使用Ubuntu

在阅读许多答案后,即使我已经将SSH密钥添加到我的git帐户中,并尝试使用ssh -T git@gitlab.com并说Welcome <my username>对其进行测试,但它们都无法解决问题,但是仍然告诉我没有访问权限。然后我发现原因是:

通常,如果您不是root用户,则每个git命令都需要使用sudo来运行。

在运行sudo git clone <SSH....>时(例如)。它将在root权限下执行,但是在偶然创建SSH密钥时,我以普通用户身份运行它,并将密钥保存在~/.ssh/id_rsa中,它解析了绝对路径/home/username/.ssh/id_rsa。并且在进行sudo git clone ...时会在{​​{1}}中查找SSH密钥

为什么我可以确定这一点。查看git在哪里寻找您的SSH密钥。运行以下命令:/root/.ssh/id_rsa。它会告诉您寻找SSH密钥的位置。

所以我建议的解决方案是:

重新创建SSH密钥(遵循此instruction),但首先要运行sudo GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone <your repository in SSH>,那么您就可以了。

答案 24 :(得分:0)

我遇到了这个问题,我发现我的系统的DNS地址错误。验证您的网络并使用

进行测试
ssh -vvv git@bitbucket.org

并阅读输出消息。如果看到“可以使用git或hg连接到Bitbucket”。 , 一切都好。

答案 25 :(得分:0)

使用您的https来源而不是ssh网址

示例:

git remote add origin  https://gitlab.com/user/folder.git

答案 26 :(得分:0)

如果您通过VPN连接到git存储库,也会发生这种情况。 确保您已连接到用于访问组织资源的VPN。

答案 27 :(得分:0)

奇怪的是,我仅在我的许多存储库中的1个中收到此错误。

我的问题是在安装了适用于Windows的新GitHub桌面后,其中以前的Win的旧GitHub将密钥保存在~/.ssh/github_rsa~/.ssh/github_rsa.pub中,因为Win的新GitHub期望将其保存在~/.ssh/id_rsa中因此解决方案只是重命名现有的私钥和公钥:

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

之后,让我再次访问存储库而没有问题。

答案 28 :(得分:0)

与其他答案一样,使用https代替ssh是解决方案。

我发布了一个答案,以给出可能解决方案的具体示例。当我使用以下命令行将远程URL更改为HTTPS时,我用bitbucket解决了这个问题:

git remote set-url origin <bitbucket_URL>

之后,我可以使用以下命令将内容推送到存储库中:

git push -u origin --all

然后我也可以使用Sourcetree

答案 29 :(得分:-1)

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

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

一个快速的解决方法是消除〜/ .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

答案 30 :(得分:-1)

进入你的 cmd 并运行这个: git config --global http.sslverify false