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

我在Windows上使用TortoiseGit。当我试图从标准Windows资源管理器的上下文菜单克隆时,我得到这个错误:

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

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

git.exe clone——progress -v "git@arobotdev:\git\AlfaRobot。git”“C: \ \ AlfaRobot”< br >
克隆到“C:\Work\AlfaRobot” 权限被拒绝,请重试。
权限被拒绝,请重试。
权限被拒绝(publickey,password).
无法从远程存储库读取数据
请确保您拥有正确的访问权限
且存储库已经存在
Git没有干净地退出(退出代码128)(21450 ms @ 19.09.2014 10:36:58)

我应该怎么做才能使git正常工作?

925474 次浏览

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

  1. 您的公钥可能没有保存在用户git的authorized_keys文件中
  2. 如果1不为真,则“您的私钥不保存在您的HOMEDIR的。ssh/文件夹中”。
  3. 权限设置不正确
如果以上三点都不属实,那么我唯一的结论就是尝试: git@arobotdev:AlfaRobot.git 假设AlfaRobot。

. git在git用户的HOMEDIR目录下,而不在git用户HOMEDIR目录下的名为git的文件夹中

这个问题可能与您的ssh-agent有关,您的ssh密钥没有与ssh-agent一起添加。您必须在您的终端上执行以下步骤:-

  1. < p > $ eval "$(ssh-agent -s)"

    Agent pid 5867

  2. $ ssh-add <private-ssh-key-file-name> // eg。id_rsa(不是.pub)

    输入/home/you/密码。ssh / id_rsa: [] 标识添加:/home/you/。ssh / id_rsa (/ home /你/ . ssh / id_rsa) < / p >

那么它就会起作用的。

你的git URL可能已经改变了。使用如下命令修改本地目录下的URL

for https协议

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

for ssh协议

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

这个问题可能有多种原因

  1. 如果问题与您的ssh身份有关,则通过@onkar-m18回答在这里
  2. 如果ssh密钥没有添加到主机服务器,则通过@lovekush-vishwakarma回答在这里

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

细节中设置pub-private密钥。

这样就可以了!

以下是我解决这个问题的方法。我在Win7/10上使用Babun(mint .exe)。当我尝试了上面提到的许多解决方案,没有一个是有效的。我意识到我可能用错了ssh代理… 所以我运行echo $GIT_SSH来查找,它显示了Plink.exe的路径。 我实际期望的是OpenSSH。

因此,我将以下一行程序添加到~/.zshrc文件中

注1:你也可以直接在babun中执行
注2:如果你使用bash,那么配置文件是.bashrc

export GIT_SSH=$(which ssh)

它真的有用!

将这些行添加到你的.get/config文件(感谢@kovshenin回答Git Pull:更改身份验证):

[credential]
helper = wincred

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

$ cat ~/.ssh/id_rsa.pub
这是您的SSH密钥。将其添加到存储库中的SSH密钥中 在gitlab转到

配置文件设置-> SSH密钥

然后添加键

尝试https而不是ssh。从复制克隆url的项目主页中选择https选项。

尝试使用HTTPS代替SSH从GIT获取克隆,使用这个Url获取克隆,你可以使用Gitbase, Android Studio或任何其他工具克隆分支。 enter image description here < / p >
  1. 你要确认的第一件事是网络连接。不过,互联网问题大多会说,回购无法访问。

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

  3. 确保您使用的是ssh git远程。如果您已经克隆了https,只需使用git命令git remote set-url origin git@github.com:your-username/your-repo-name.git将url设置为ssh url

  4. 如果你已经正确地设置了ssh,但它只是停止工作,执行以下操作:

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

    如果你仍然有这个问题,检查以确保你没有从你的github删除ssh。在ssh已从github删除的情况下,您可以将其添加回来。使用pbcopy < ~/.ssh/id_rsa.pub复制ssh密钥,然后转到你的github ssh设置并添加它

我建议你总是使用ssh。对于我合作过的大多数团队来说,除非使用ssh,否则您无法访问回购(大多数是私有的)。对于初学者来说,这可能看起来很难,但后来你会发现它更容易和更安全。

奇怪的是,我只收到这个错误在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

之后,让我再次访问回购没有问题。

如果您通过VPN连接到git存储库,也会发生这种情况。

.请确保您已经连接到用于访问您组织资源的VPN

使用您的HTTPS源而不是SSH url

例子:

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

我有这个问题,我发现我的系统是错误的dns地址。验证您的网络和测试

ssh -vvv git@bitbucket.org

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

我在用Ubuntu

在阅读了许多答案后,没有一个能解决问题,即使我已经在我的git帐户中添加了SSH密钥,并尝试使用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 ...时,它会在/root/.ssh/id_rsa中查找SSH密钥

为什么我可以确定。查看git在哪里查找SSH密钥。执行命令:sudo GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone <your repository in SSH>。它将显示在哪里查找SSH密钥。

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

重新创建您的SSH密钥(遵循这个指令),但在第一步运行sudo su,然后你就会没事了。

我在上传项目到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的用户设置是你将添加你的您帐户的公钥的地方,允许我们最终push

在项目位置(目录)中使用以下命令

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之前推送过当前的分支,它会记住原点在哪里

:这是我在初始化时想要推到的分支的名称

Github现在使用url方案

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

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

因此,总是复制&粘贴SSH公钥,不删除最后换行符。

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

这个问题可能是因为有时ssh-agent在重新启动时不是持久的。你应该检查ssh-agent是否添加了你的密钥:

ssh-add -l -E md5

如果你得到如下输出:

The agent has no identities.

这意味着ssh-agent丢失了你的密钥。在这种情况下,您只需要再次添加标识键。喜欢的东西:

ssh-add ~/.ssh/git_rsa

错误现在应该消失了!

对我来说,我有公司VPN的问题,断开连接后工作正常。

使用ssh -vvvT git@github.com命令检查与github的连接

如果您使用的是共享机器,那么使用自己的密码或无密码私钥可能会有些过分。更安全的选项是访问令牌:

  1. 设置,开发人员设置,个人访问令牌
  2. 生成新的令牌。
  3. 注意标记的用途。
  4. 授予回购访问权。
  5. 克隆回购:
$ 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.

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

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

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

< p >我的情况: 我使用Windows,我有一个以上的用户帐户。 我收到了同样的错误,修复是启动git bash与管理员权限

类似的问题:

当git使用SSH URL克隆git时,我给了passphrase
所以这个错误现在显示,每次我打开VS CodeWindows 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代码

3.重新打开VS Code

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

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

  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. login github—>设置——比;SSH和GPC密钥>添加SSH密钥>粘贴复制的内容在关键

  2. run below命令

ssh -T git@github.com

好的,它起作用了

进入你的cmd并运行:git config——global http。sslverify假

您可以按照以下步骤-

  1. 检查现有密钥- A. ls -al ~/.ssh

  2. 如果不存在则创建密钥- 粘贴下面的文本,替换在你的GitHub电子邮件地址。 a. ssh-keygen -t ed25519 "your_email@example.com" b.当系统提示“输入要保存密钥的文件”时;按回车。这接受默认的文件位置。 c.在提示符下,输入安全口令

  3. 将SSH密钥添加到SSH -agent- 启动SSH代理并添加密钥

  4. < p > eval ssh-agent -s

  5. < p > ssh-add ~ / . ssh / id_ed25519

  6. 为Git帐户添加密钥- 拉出密钥并添加到Github帐户

  7. < p >猫~ / . ssh / id_ed25519.pub

  8. 导航到Git帐户并添加SSH密钥

如果使用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

我只是按照这个解释

enter image description here

我试过评估,很有效。

然后我尝试ssh -T git@bitbucket.org

然后我再次克隆。现在一切都很顺利

在尝试了许多这些修复失败后,我能够使用GitHub桌面应用程序克隆回购。

错误配置的~/.ssh/config文件可以触发此错误。

GitHub的test命令基本上为我打印出了解决方案:

ssh -T git@github.com

/用户/ myUser /。第13行:错误的配置选项:something-that-did-not-make-sense