git:致命的:无法从远程存储库读取


356

我正在尝试使用http://danielmiessler.com/study/git/#website设置git 来管理我的网站。

我已经到达指示的最后一步:git push website + master:refs / heads / master

我正在使用Win7中的git ming32命令行

$ git push website +master:refs/heads/master
Bill@***.com's password:
Connection closed by 198.91.80.3
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

这里的一个问题可能是该程序正在寻找Bill@***.com。当我通过ssh连接到我的网站时,我使用了另一个用户名(可以说'abc')。所以也许应该是abc@***.com。如果是这样,我不知道该如何更改,或者我是否可以使用别名进行推送


1
我遇到了同样的问题,有时当git服务器无法访问或出现“内部服务器错误”之类的错误时,就会发生此错误。
Morteza Ziyae 2014年

2
首先,请查看.git/config文件,看看一切正常。它对我来说有错误的set-url和origin值。
mixdev



您能告诉我.git / config和.ssh / config的正确顺序吗?我有点困惑。
gumuruh

Answers:


134

您可以指定SSH应该作为远程URL的一部分发送到远程系统的用户名。@在远程主机名前放置用户名,后跟一个。

git remote set-url website abc@***.com:path/to/repo

3
ps,有没有一种方法可以添加密码,这样我就不必继续输入密码了?
LDN 2012年

15
编辑.git/config具有远程url参数的文件
Sayanee

@ user61629:我知道我参加聚会要晚了,但是您应该考虑使用私钥/公钥对而不是密码。
code_dredd '16

哪个用户名?计算机用户名还是github用户名?
特工斑马

11
对于Github,您始终使用username git。示例:git@github.com:mayoff/uiimage-from-animated-gif.gitGithub通过查看您发送的SSH密钥来弄清您的身份。
rob mayoff

189

您的ssh密钥很可能已从ssh代理中删除

ssh-add ~/.ssh/id_rsa

其中id_rsa是与git repo相关联的ssh密钥


7
这对我有用!我花了很长时间尝试将〜/ .ssh / config文件配置为对不同的主机使用不同的密钥,以为这个文件是问题所在。最后,它必须一直在为正确的主机使​​用正确的密钥,但是该密钥已被“删除”。因此ssh-add ~/.ssh/theKeyInQuestion让我重新启动并使用此存储库运行,不知道已删除密钥,甚至不知道“已删除”是什么意思,但至少我能够再次进行身份验证。即使经过数月的身份验证问题,SSH仍然是我的一个谜。ssh代理问题是您还需要注意的一件事!
Alex Bollbach '17

非常感谢..尝试在我的GitLab帐户中创建,删除等SSH密钥后,这终于对我有用....谢谢!
Bms bharadwaj

这解决了我的问题。我已经在服务器上添加了新生成的ssh密钥。这个钥匙需要添加!
卡尚

1
这为我解决了,我不明白为什么。.它过去一直起作用,突然之间就没有,是否有一个从代理中删除密钥的过程,它是否会偶然发生?
米格尔·史蒂文斯

为什么会发生?它全天工作,但是到了晚上,它停止了工作。这个答案有所帮助。
Andrey Semakin

130

确保输入正确的网址 .git/config

url = git@github.com:username/repo.git

如果这是您的第一推,则需要设置正确的上游

$ git push -u origin master

您可以通过以下方式检查使用哪个密钥:

$ ssh -vvv git@github.com

答复应包含以下内容:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
...
You've successfully authenticated, but GitHub does not provide shell access.

也可以为ssh定义规则~/.ssh/config,例如基于别名:

   Host github
      HostName github.com 
      User git
      IdentityFile "~/.ssh/id_rsa"

   Host git
      HostName github.com 
      User git
      IdentityFile "~/.ssh/some_other_id"

您可以设置连接到不同的端口,为每个别名使用不同的用户名等。


1
谢谢!!在克隆克隆存储库的某个时候,将url其设置为https://github.com/user/repo.git(不带git@github.com),因此它拒绝使用我的SSH密钥。也许是因为我最初是使用GIthub for Windows克隆它的(?)
Jedidja

我不得不更改url = ssh://github.com/RaphaelBossek/dev-atlassian-jira-proman.giturl = ssh://git@github.com/RaphaelBossek/dev-atlassian-jira-proman.git它并且再次起作用
Raphael Bossek

该死的,你真棒。我尝试了许多其他解决方案。我的网址是HTTPS:还有:(
agrublev

这个-vvv提示对我很有帮助。现在,我看到它说“连接被XXX.XXX.XXX.X端口22关闭”。
瑞安

啊,DeployHQ说:“ BitBucket当前遇到次要服务问题。请查看其状态页面以获取更多信息。status.bitbucket.org ” Bingo。
瑞安

123

前段时间我遇到了同样的问题...

我的.git / config有

url = git@github.com:manishnakar/polymer-demo.git

我用

url = https://github.com/manishnakar/polymer-demo.git 

它现在可以工作:)


8
这个排名不高吗?git @ github完全不适合我
hlitz '18

3
如果存储库所有者尚未设置ssh密钥,则可能会出现此问题。所指示的解决方法是使用https替代方法,或者设置回购所有者ssh
RyanNerd

@smileham会将带有回购协议的远程链接从基于ssh的身份验证切换到https协议(如果需要,它将提示输入usr / pwd)
Vincent Chalmel,

这是正确的答案,对我立即起作用。
金斯顿财富

对于git remote set-url ...像我这样出错的用户,或者像我(!)这样愚蠢地在用户名中带有大写字母的用户(例如PeDro),都应遵循此规则。它起作用了:)
Pe Dro

23

尝试使用删除GIT_SSH环境变量unset GIT_SSH。这是我问题的原因。


1
我不知道我从哪里得到了GIT_SSH环境变量:)
StrangeLoop

1
对于Windows,请从高级选项菜单中删除GIT_SSH环境变量。为我工作。
splintercell

怎么样?我要在终端上写些什么呢?
特工斑马


14

这通常是由于SSH密钥与远程服务器不匹配所致。

解决方案:

  1. 转到终端,然后键入以下命令(Mac,Linux)并替换为您的电子邮件ID。

    ssh-keygen -t rsa -C“ you@email.com”

  2. 使用以下命令从单词ssh开始复制生成的密钥。

    猫〜/ .ssh / id_rsa.pub

  3. 将其分别粘贴到您的遥控器的github,bitbucket或gitlab中。
  4. 保存。

9

我有同样的问题。

此错误表示您尚未指定将代码推送到的远程URL位置。

您可以通过2种(主要)方式设置远程URL:

  1. 通过在Git Bash上执行命令来指定远程URL。

    • 导航到您的项目目录

    • 打开Git Bash

    • 执行命令:

      • git remote set-url origin <https://abc.xyz/USERNAME/REPOSITORY.git>
  2. 在配置文件中直接提及远程URL

    • 导航到您的项目目录

    • 移至.git资料

    • 在文本编辑器中打开配置文件

    • 复制并粘贴以下行

      • [remote "origin"] url = https://abc.xyz/USERNAME/REPOSITORY.git fetch = +refs/heads/*:refs/remotes/origin/*

有关更多详细信息,请访问此链接



7

我有同样的错误。解决方案如下:我已更正了URL .git/config。刚刚从HTTPS克隆URL复制了该代码。那将是这样的:

url = https://github.com/*your*git*name*/*your*git*app*.git

有效。


如果我在Windows os下的配置文件中写了这个文件,则错误以不同的方式出现,它说...“ / c / Users / asus / .ssh / config:第5行:错误的配置选项:url”
gumuruh,

在ssh上使用https可以正常工作,它询问用户名和密码
Kiran

4

另一个解决方法:

有时由于网络问题,这在我身上发生。我无法完全理解根本问题,但是切换到其他子网或使用VPN可以解决问题


完全是我的情况。希望我已阅读此评论。经过几个小时的调试,想到使用VPN即可。
Chaitanya Bapat


3

在您的.git / config文件中

[remote "YOUR_APP_NAME"]
    url = git@heroku.com:YOUR_APP_NAME.git
    fetch = +refs/heads/*:refs/remotes/YOUR_APP_NAME/*

并且简单地

git push YOUR_APP_NAME master:master 

3

在我的情况下,我使用带有密码的ssh密钥对github进行身份验证。我没有在Windows中正确设置选美(仅在cygwin中)。缺少的步骤是将git_ssh环境变量指向plink.exe。另外,您需要将github.com放入plinkknown_hosts中。

   plink github.com
   y
   <then ctrl-c>

希望这可以帮助!

我当然希望intellij给我一个更有用的错误,或者更好的是让我键入ssh密钥密码。


3

我为Bitbucket使用了错误的ssh私钥以及ssh代理中的正确私钥。

首先删除所有键

ssh-add -D

然后添加正确的键。

ssh-add ~/.ssh/id_rsa

2

就我而言,我在办公室中使用公司网络(没有Internet连接)。为了从github提取代码,我在gitbash中设置了https代理,然后使用https而不是ssh来提取代码,效果很好。但是,在推送代码时,https代理将不起作用。因此,切换到Internet网络(通过Internet连接)或设置ssh代理都可以解决问题。


2

实际上,由于将SSH exectun frn本机更改为build-it和向后以及相同的错误,我尝试了很多方法使其在Win7上运行。偶然地,我将其在“ .git / config”文件中更改为HTTPS:

[remote "origin"]
        url = https://github.com/user_name/repository_name.git
        fetch = +refs/heads/*:refs/remotes/origin/*

终于奏效了 所以也许它也可以为您工作。


2

我遇到了同样的问题,过了一会儿,我看到我在root用户下(使用sudo -s)。可能对某人有帮助。


我确认,即使您在计算机和BitBucket上设置了ssh密钥,如果尝试使用'sudo'命令执行'git pull',它仍然会显示此错误。
ElectroBuddha

2

如果在执行“ git push origin master”命令后看到错误“无法从远程存储库读取”,请尝试此操作

1.ssh-keygen -t rsa -b 4096 -C "youremail"
2.eval $(ssh-agent -s)
3.ssh-add ~/.ssh/id_rsa
4.clip < ~/.ssh/id_rsa.pub(it copies the ssh key that has got generated)
5.then go to your remote repository on github and goto settings-> SSH and GPG keys ->new SSH key ->enter any title and paste the copied SSH key and save it
6. now give git push origin master 


1

我有同样的错误,这使我对这个答案没有帮助。我试图使用下面的命令首次创建一个新的“裸露”存储库以跟踪到NTFS位置:

cd myrepository
git init --bare \\myserver.mycompany.local\myrepository.git
git init
git status
git add .
git status
git commit -m "Initial Commit"
git remote add origin \\myserver.mycompany.local\myrepository.git
git push -u origin master
git status

我的问题原来是在尝试添加起点以设置(新的)跟踪上游分支时,在NTFS位置中使用反斜杠而不是正斜杠。

我必须使用以下方法删除原点:

git remote rm origin

然后使用预期的正斜杠再次添加原点

git remote add origin //myserver.mycompany.local/myrepository.git

希望这对以后的人有所帮助。


1

更换计算机后出现此错误。我正在使用Bitbucket的SourceTree。

因此,我必须在连接到Web上的Bitbucket帐户的同时,在新计算机上的Bitbucket设置>安全> SSH密钥中添加SourceTree生成的SSH密钥。


1

我通过重启终端(打开一个新窗口/选项卡)解决了这个问题。

因此,如果您真的不想/不需要了解潜在的问题,那么在深入研究之前,值得尝试一下测试方法:)


0

对于那些在私人远程仓库上有此问题的人。确保您已接受远程服务器上的Xcode协议:我们花了数周时间才找到此修复程序

从命令行使用此命令:sudo xcodebuild -license


0

我只是想分享一下,我为此找到了一个简单的解决方法:

拒绝访问。致命:无法从远程存储库读取。请确保您具有正确的访问权限,并且存储库存在。

只需从gitlab注销并再次登录即可。然后应解决问题。


0

使用putty / pageant时,请确保不要忘记将正确的SSH密钥添加到pageant,否则将显示此错误。杜氏





By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.