卡诺推送到远程存储库 - "Please make sure you have the correct access rights and the repository exists."



由于在推送到我的私人项目和我的工作项目之间移动,我经常面临身份验证问题。 每次我从工作环境转移到个人环境时,我都会花一些时间处理我的 ssh 密钥和配置。 我经常浏览github文档,以生成和向站点添加ssh公钥。

今天,我得到:

ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

我尝试生成一个新的 ssh 密钥对并将公钥提交给 github,但 github 说"密钥已在使用中"。 我在谷歌上搜索了一会儿,但无法完全理解该错误消息。

切换档位 我注意到,在运行命令时ssh -T git@github.com,输出将我视为与我的个人帐户用户名相关联的 Github 用户,而不是我的工作用户名。

我对ssh的理解是,它在某种意义上是"无责任的"。 没有用户名或密码是 ssh 连接过程的一部分。 因此,既然我相信身份验证问题围绕着某些系统认为我以我的私人 github 帐户的用户名登录,我该怎么办?

GitHub 如何知道你是谁

我对ssh的理解是,它在某种意义上是"无责任的"。没有用户名或密码是 ssh 连接过程的一部分。所以现在我相信身份验证问题围绕着某个系统认为我以我的私人 github 帐户的用户名登录

你是对的:问题是 GitHub 对你的 GitHub 用户名做出了假设,但它并不总是适合你当前的需求。

所有 SSH 连接都有一个用户名。在GitHub的情况下,它总是"git"。这是您的 GitHub URL 的"git@"部分,例如

git@github.com:username/projectname.git

就SSH而言,用户名始终为"git"。

但是GitHub(在服务器上运行的应用程序)还有另一层。它会查看您用于进行身份验证的 SSH 密钥,并查找哪个 GitHub 用户具有与其帐户关联的密钥。这就是它将您的SSH连接映射到GitHub用户名的方式。

问题所在

您在 GitHub 上有多个帐户。因此,您需要一种方法来控制正在使用哪一个。但默认情况下,SSH 将始终对"github.com"使用相同的密钥。

解决方案

(下面假设macOS或Linux-如何在Windows中执行此操作是不同的,但相同的概念适用。

您可以通过映射不同的虚拟主机名来控制使用哪个密钥。

假设您有两个密钥,

  • ~/.ssh/id_github_work
  • ~/.ssh/id_github_personal

您可以在~/.ssh/config中设置这样的配置文件:

Host github.com-work
Hostname github.com
User git
IdentityFile ~/.ssh/id_github_work
Host github.com-personal
Hostname github.com
User git
IdentityFile ~/.ssh/id_github_personal

现在,您可以使用主机名控制使用哪个密钥。您可以像这样克隆:

git clone github.com-personal:yourusername/projectname

它将使用您的个人密钥。要使用其他密钥,只需使用其他主机名。

为什么有效

SSH 将在您的 URL 中看到主机名,例如

github.com-personal

在执行任何其他操作之前,它会查看自己的配置以查看是否有任何与该主机名关联的参数。由于此主机名与我们添加到~/.ssh/config的条目匹配,因此它会加载这些参数。

其中一个参数Hostname告诉SSH,我们给它的主机名不是服务的真实主机名。SSH(以及 Git)仍将连接到主机名"github.com",但它将使用此 SSH 配置文件指定的 SSH 密钥(和用户名)。

修复现有存储库

如果已有存储库,则无需重新克隆它。您只需更改网址即可。

git remote set-url origin github.com-personal:yourusername/projectname

吉特护照

您也可以尝试 git-passport 正如 RichouHunter 在评论中建议的那样。我没有使用该工具的经验,所以我不能保证它,但它似乎试图解决同样的问题。

相关内容

  • 没有找到相关文章

最新更新