498

我正在尝试使用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。如果是这样,我不知道如何更改它,或者我是否可以使用别名推送

4

59 回答 59

372

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

ssh-add ~/.ssh/id_rsa

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

更新

您可能会通过Could not open a connection to your authentication agent.以下方式解决需要先启动代理的错误:

eval `ssh-agent -s`
于 2016-10-12T22:49:13.767 回答
220

前段时间我也面临同样的问题...

我的 .git/config 有

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

我把它换成了

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

现在可以使用了:)

于 2015-12-04T05:38:22.613 回答
159

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

git remote set-url website abc@***.com:path/to/repo
于 2012-11-22T09:24:04.707 回答
148

确保你有正确的网址.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 in 定义规则~/.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"

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

于 2013-12-21T00:51:58.760 回答
26

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

于 2014-07-30T17:25:15.507 回答
25

这通常是由于 SSH 密钥与远程不匹配造成的。

解决方案:

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

    ssh-keygen -t rsa -C "you@email.com"

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

    猫 ~/.ssh/id_rsa.pub

  3. 将其粘贴到遥控器的 github、bitbucket 或 gitlab 中。
  4. 保存。
于 2015-09-27T11:45:28.910 回答
22

通过在终端上执行以下命令确保 ssh-agent 正在运行:

eval $(ssh-agent -s)

来源:Github 文档

于 2015-10-19T20:05:32.373 回答
19

我有一个错误的 Bitbucket ssh 私钥以及 ssh 代理中的正确私钥。

首先删除所有密钥

ssh-add -D

然后添加了正确的键。

ssh-add ~/.ssh/id_rsa
于 2020-03-20T21:55:02.237 回答
14

我有同样的问题。

此错误表示您尚未指定代码将推送到的远程 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/*

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

于 2017-04-18T15:51:12.833 回答
8

在做了一些研究之后,我终于找到了解决方案,你已经为 plink.exe 路径声明了一个环境变量。因此,如果您删除该路径,请重新打开 git bash 并尝试通过 SSH 进行克隆,它将起作用。

参考这个链接

http://sourceforge.net/p/forge/site-support/2959/#204c

于 2013-10-01T10:38:47.223 回答
8

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

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

有效。

于 2015-01-23T21:05:01.890 回答
8

另一种解决方法:

有时这发生在我身上是因为网络问题。我不完全理解根本问题,但是切换到不同的子网或使用 VPN 可以解决它

于 2015-06-22T15:07:45.193 回答
5

如果在“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 
于 2018-02-10T15:44:35.873 回答
4

在你的 .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 
于 2013-07-27T20:20:26.667 回答
4

如果您使用 Gitlab,则可能需要登录并接受 Gitlab 新条款,然后再尝试拉取或推送。

于 2018-05-23T18:52:17.247 回答
4

2020 年 10 月更新

在大多数情况下,当您有多个用户从同一个客户端系统访问同一个 git 服务器时,此时 git 服务器与两个用户都允许的用户的访问密钥混淆,但是当您触发命令时,它使用了默认用户。

ssh -T git@gitlab.com

查看您尝试与该用户一起推送的用户

简单的解决方案从 git 服务器中删除未使用的用户公钥。

然后尝试 git fetch 或 pull,push 它将对我有用

于 2020-10-13T11:14:26.420 回答
3

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

   plink github.com
   y
   <then ctrl-c>

希望这可以帮助!

我当然希望 intellij 能给我一个更有用的错误,或者更好地要求我输入 ssh 密钥密码。

于 2016-09-05T01:22:23.590 回答
3

我有一个完美的工作 git,但当我尝试推送到 master 时突然出现了这个错误。我发现,这是因为存储库主机有问题。

如果您使用 GitHub 或 Bitbucket,您可以在以下位置轻松检查状态

https://status.github.com/messageshttps://status.bitbucket.org/

在此处输入图像描述

于 2018-03-02T17:04:14.743 回答
3

我已经尝试了一切,包括生成新密钥、添加到 GitHub 帐户、编辑.ssh/config.git/config。但它仍然给了我同样的错误。然后我尝试了以下命令,它确实成功了。

ssh-agent bash -c 'ssh-add ~/.ssh/id_rsa; git clone git@github.com:username/repo.git'
于 2019-03-01T00:16:33.653 回答
3

我刚刚遇到问题并通过以下方式解决它: git config user.email "youremail"


更新:根本原因可能是我糟糕的网络和糟糕的代理。我仍然不知道为什么会这样,但是每次都有这个错误,这个命令有效!!!

于 2019-09-21T07:35:18.483 回答
3

您需要为 Git 使用 HTTPS:

在终端中输入:

$ git remote set-url origin abc@***.com:path/to/httpURLRepo

然后提交:

$ git add .
$ git commit -m "This is the commit message"
于 2020-05-07T18:26:21.537 回答
2

就我而言,我在办公室使用公司网络(没有互联网连接)。为了从 github 拉代码,我在 gitbash 中设置了 https 代理,然后使用 https 而不是 ssh 来拉代码,它工作正常。但是,在推送代码时,https 代理将不起作用。所以要么切换到 Internet 网络(有 Internet 连接),要么设置 ssh 代理可以解决问题。

于 2015-07-08T11:00:23.760 回答
2

实际上,我尝试了很多方法使其在 Win7 上运行,因为将 SSH exectun 从本机更改为 build-it 和向后以及相同的错误。碰巧,我在“.git/config”文件中将其更改为 HTTPS,如下所示:

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

它终于奏效了。所以也许它也对你有用。

于 2016-03-09T22:13:53.027 回答
2

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

于 2017-03-10T15:09:29.353 回答
2
user@server:/etc/nginx$ cat .git/config 
...
[remote "origin"]
    url = git@gitlab.com:user/.git
    fetch = +refs/heads/*:refs/remotes/origin/*
...

  1. 使用 ssh 而不是 https。
  2. 在 git 中使用 ssh 密钥(添加 ssh 密钥)。
  3. 如果您是 root,请使用 ssh 密钥。

$ sudo ssh-keygen
$ cat /root/.ssh/id_rsa.pub 

$ git init
$ git add file
$ git commit -m "add first file"
$ git remote add origin git@gitlab.com:user/example.git 
$ git push -u origin master
于 2017-09-18T00:31:02.570 回答
2

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

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

于 2019-01-30T10:46:55.083 回答
2

我在 Windows 10 上使用 gitbash 时遇到了这个问题。我尝试了几件事来解决这个问题,主要是这些:

  1. 重新创建了我的 ssh 密钥并更新为 bitbucket。没有帮助
  2. 使用它打开调试,发现我收到“通道 0 上的 shell 请求失败”,如此处所
  3. 重新启动我的Windows PC

以上都没有帮助。我最终为 Windows重新安装了Git与我所做的其他事情相比,这只花了几分钟,它解决了问题!

于 2019-05-22T20:47:29.133 回答
1

就我而言,它是 postBuffer ..

git config --global http.postBuffer 524288000

供参考阅读:https ://gist.github.com/marcusoftnet/1177936

于 2016-01-04T16:05:28.390 回答
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

希望这对将来的某人有所帮助。

于 2016-12-08T16:02:18.033 回答
1

换电脑后出现这个错误。我将 SourceTree 与 Bitbucket 一起使用。

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

于 2017-03-12T21:29:17.183 回答
1

我间歇性地遇到这个问题,大多数时候它不会给出错误消息。我的解决方案是在我的 LDAP 服务器的 IP 地址更改后正确配置 LDAP。

LDAP的/etc/gitlab/gitlab.rb配置指向一个不存在的 IP 地址,因此将主机更改为指向 LDAP 服务器的正确主机名解决了这个问题。

要诊断问题,请使用该gitlab-ctl tail命令帮助您查找堆栈跟踪。对我来说,我发现了这个堆栈跟踪:

==> /var/log/gitlab/gitlab-rails/production.log <==

Net::LDAP::Error (No route to host - connect(2) for 10.10.10.12:389):
  /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/net-ldap-0.16.0/lib/net/ldap/connection.rb:72:in `open_connection'
...

对主机值进行更改/etc/gitlab/gitlab.rb

gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
   main: 
     label: 'My LDAP'
     # this was an IP address
     # host: '10.10.10.12'
     host: 'internal-ldap-server' # this is the fix
     port: 389

修改上面的config文件后,一定要重新配置gitlab

gitlab-ctl reconfigure
于 2019-04-15T18:05:47.790 回答
1

可能是网络问题。

尝试做ssh -vvvT git@gitlab.com. 如果服务器意外挂起,则可能是网络连接不可靠。

将以下内容放入您的 ~/.ssh/config

IPQoS lowdelay throughput
于 2019-09-14T19:33:41.853 回答
1

就我而言,我试图用sudo. 根据 Github 的文档,您不应将 sudo 与 git clone 一起使用: https ://help.github.com/en/github/authenticating-to-github/error-permission-denied-publickey#should-the-sudo-command - 与 git 一起使用

我所做的是授予当前用户编辑目录的权限(Debian 9):

chown myuser:root .

然后在没有克隆的情况下sudo成功了。

于 2019-11-29T18:04:54.003 回答
1

如果您在我的情况下设置了recievepackuploadpack ,我在错误设置后得到了错误

receivepack = powershell git receive-pack

在我的情况下.git/config

您可以按照下面的答案删除它们

https://stackoverflow.com/a/26207308/7668448

或者直接修改.git/config

于 2020-04-11T07:43:29.597 回答
1

有时您需要使用带有ssh://方案的完整 URL:

ssh://git@yourhost:port/path/repo.git

或指定端口:

ssh://git@yourhost:port/path/repo.git

对我来说,它解决了这个问题。

于 2020-04-20T06:21:55.887 回答
1

遇到这个,因为我在中国有防火墙......

kex_exchange_identification:连接被远程主机关闭致命:无法从远程存储库读取。

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

于 2020-06-04T02:43:50.523 回答
1

就我而言,问题及其解决方案就写在我面前。那天早些时候,我编辑了 /etc/ssh/ssh_config 文件并添加了一些键。错误说:

/etc/ssh/ssh_config: line 52: Bad configuration option: allowusers
/etc/ssh/ssh_config: terminating, 1 bad configuration options
fatal: Could not read from remote repository.

我删除了allowusers密钥,它的价值和一切都按预期工作。

于 2020-06-11T15:20:15.670 回答
1

不是 OP 的问题,但如果您在GitHub 组织/团队中工作,您可能没有存储库的写入权限。不幸的是,git 没有显示更具体的权限错误。就我而言,我正在开发一个私有存储库,并获得了“分类”或“读取”访问权限。

有关每个权限级别的存储库访问的更多信息,请参阅GitHub 文档

在 GitHub 上更改此设置的链接是https://github.com/orgs/ORGANISATION_NAME/teams/TEAM_NAME/repositories,您可以在其中更改授予团队的权限。

github 组织的团队的存储库选项卡的屏幕截图

于 2020-10-12T17:23:59.077 回答
1

我有同样的问题并通过更新到最新的 git 版本来解决

于 2020-10-20T11:03:23.797 回答
1

就我而言,bitbucket 的 web ssh 密钥设置 UI 令人困惑。

存储库设置 -> 访问密钥 -> 添加密钥:错误

个人设置 -> SSH 密钥 -> 添加密钥:好的

公钥注册屏幕是互斥的。您必须仅在一处注册公钥。将它们统一在一个屏幕上似乎很好。

于 2021-10-17T02:16:26.483 回答
0

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

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

于 2014-11-08T16:27:28.303 回答
0

我只是想补充一下这个问题。我设置了 Git 以使用 PLink 和 Pageant 进行身份验证,但我也遇到了错误FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)。我打开了Pageant,但错误仍然出现。问题?我没有在 Pageant 中加载私钥(要添加密钥,请按照这些说明进行操作)。就这么简单。

于 2015-05-06T07:12:00.933 回答
0

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

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

只需从 gitlab 注销并再次登录。然后应该解决这些问题。

于 2015-06-14T18:36:23.727 回答
0

使用 putty/pageant 时,请确保您没有忘记将正确的 SSH 密钥添加到 pageant,否则会出现此错误。呃

于 2015-10-14T14:50:11.810 回答
0

转到 MINGW32 终端输入以下命令: git branch --set-upstream-to=origin/(branch Name)

于 2016-05-24T06:05:23.507 回答
0

如果仍然出现同样的错误,请确保在 git settings->ssh tab->ssh client to use 设置为openSSH在此处输入图像描述

于 2016-08-30T11:21:14.093 回答
0

根据我的经验,出现此问题的原因之一是您的互联网连接不稳定

于 2017-07-31T04:38:13.733 回答
0

我遇到了同样的问题;只需您可以在命令窗口上运行它:

git 远程添加源https://your/repository/url

于 2017-08-08T09:26:54.777 回答
0

除了“我有同样的问题并且......”之外,我还在 Windows 中通过 Ming32 (git bash) shell 使用 git。

在我的情况下,repo 要求我输入密码,而不是使用 SSH 密钥,但它没有提示输入密码,只是说“致命:无法读取...”,尽管我可以使用 plink 和 ssh 正常 SSH ,并且设置了两个已知主机密钥。

我在这里和其他 SO 中尝试了大部分建议。

最后我发现它在 Powershell 中运行良好,但在 git bash 中运行良好,没有任何更改或更正。

于 2017-08-24T01:15:25.913 回答
0

我建议检查您配置的所有遥控器git remote -v如果您将 repo 配置为已删除的遥控器,您将收到此错误消息: fatal: Could not read from remote repository. Please make sure you have the correct access rightsand the repository exists.即使尝试推送或拉到另一个(现有)遥控器。因此,如果您有一个已删除的遥控器,您可以删除,git remote remove name-of-remote-to-remove之后您可以毫无问题地推送或拉入现有的遥控器。

于 2018-01-16T03:33:12.573 回答
0

我在尝试将代码从工作中推送到我的个人 git 时遇到此错误 - 默认指向工作 git。所以我按照以下步骤操作:

  1. 转到我的个人 git 帐户并使用默认设置创建 repo
  2. 在终端上, git remote add origin git@github.com:/.git
  3. git push --set-upstream origin master,确保 origin 位于上游,并且只能使用 git push 进行下一次提交。

出于某种原因,没有其他方法对我有用。希望这对使用 2 个或更多 git 帐户的人有所帮助。

于 2018-12-13T18:34:53.730 回答
0

我通过输入多次错误密码遇到这个问题。

所以我必须将 MaxAuthTries 更改为更大的数字:

打开sshd_config服务器端:

vim  /etc/ssh/sshd_config

更改 MaxAuthTries 编号:

MaxAuthTries 100    # there I change to 100, you can change to a bigger than your current tries number
于 2019-09-09T09:16:31.547 回答
0

我的解决方案实际上很简单。我只需要复制并放置这个问题“请输入‘是’、‘否’或指纹”中的指纹,而不是直接按回车键。

于 2021-10-02T12:15:54.547 回答
0

我有同样的错误,但如果你再次传递命令,你会注意到你被提示:Are you sure you want to continue connecting (yes/no)?,并且通过写“yes”然后点击enter它应该可以解决。

于 2021-12-23T00:40:30.360 回答
0

在极少数情况下,您会收到“致命:无法从远程存储库读取”错误,例如

[user@example.com repo]$ git fetch --all --prune
Fetching origin
exec request failed on channel 0
fatal: Could not read from remote repository.

当 Git 服务器文件系统已满时。要验证这一点,请运行:

ssh -v ssh://git@yourhost/path/repo.git

如果服务器这样回复:

...
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/...
SHA256:...
debug1: Server accepts key: /home/...
SHA256:...
Authenticated to linux-git.....com ([xxx.xxx.xx.xx]:xx) using "publickey".
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: filesystem full
...
debug1: Remote: PTY allocation disabled.
PTY allocation request failed on channel 0
shell request failed on channel 0

那么服务器上的磁盘空间就用完了。

我知道这个答案不会得到很多赞成票;为了完整起见添加它。

PS也可以使用类似的东西

GIT_SSH_COMMAND="ssh -v" git pull

诊断问题。

于 2021-12-30T11:21:44.643 回答
0

就我而言,我在做一个开源贡献时没有分叉项目就拉了这个项目,这让我陷入了这个错误。

还要确保使用此命令从终端将公共 ssh 密钥添加到远程 ssh 密钥

add-ssh /keyPath

例如:我已经将我的公钥保存在 github 文件夹中,这个文件夹在一个隐藏的 ssh 文件夹中,在主目录中隐藏了 ssh 文件夹,所以,ssh 密钥文件路径是这样的

~/.ssh/github/id-rsa

所以终端中将本地 ssh 密钥添加到远程的命令是

add-ssh ~/.ssh/github/id-rsa
于 2022-02-11T23:29:09.713 回答
0

在这里对我有用的非常简单的解决方案 =>使用端口 443 的 HTTPS

于 2022-03-01T14:35:35.587 回答
-5

我通过使用 sudo su 切换到 root 解决了这个问题。

于 2019-09-13T16:19:42.953 回答
-34

我也遇到了同样的问题,经过多次尝试,我发现它们无效。最后,我用

$ git push origin master

有效!

于 2017-08-08T02:33:03.070 回答