首页 > 解决方案 > 通过 ssh 推送;连接关闭。fata:无法从远程存储库中读取

问题描述

我知道那里有很多类似的问题……但我找不到任何可以帮助我解决问题的东西。所以……我们开始吧。

我正在尝试将 repo 推送到自托管 GitLab 实例。我不得不重新生成我的 SSH 密钥,由于某种原因,这破坏了一切,我只是不知道为什么。每当我尝试推送时,都会出现以下错误:

Connection closed by [HOST] port 22
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

我已将新的公钥添加到 GitLab,并且我已重新配置我的 SSH 配置以也使用新密钥:

Host gitlab.[mydomain]
  User              git
  Hostname          gitlab.[mydomain]
  IdentityFile      ~/.ssh/private/[keyfile]
  IdentitiesOnly    yes

我已经两次和三次检查了所有内容。我是回购的所有者,回购仍然存在于 GitLab 实例上,我的 .git/config 中的 url 是正确的,我已经向 GitLab 添加了正确的公钥,并且我的 ssh 配置中的域和文件名是正确的好吧……但由于某种原因它不起作用。

出于测试目的,我在 GitHub 上创建了一个 Repo,将其添加为另一个遥控器。我可以毫无问题地推送到 GitHub。我什至尝试将用于 GitLab 的相同 SSH 密钥添加到 GitHub,并在 SSH 配置中编辑我的条目以匹配。推送仍然可以正常工作。

在这一点上我真的很困惑,我觉得我错过了一些明显的东西......但我就是无法修复它。

标签: githubsshgitlab

解决方案


首先,测试您的密钥是否被 GitLab 接受:

ssh -Tv gitlab.[mydomain]

这应该以欢迎消息结束。

然后,确保使用正确的 URL

git ls-remote gitlab.[mydomain]:aProject/aRepo

这将迫使 SSH 考虑您的~/.ssh/config文件。


推荐阅读