当我尝试使用 ssh 推送时,Git 尝试使用全局用户

  • 本文关键字:Git 用户 全局 ssh git ssh
  • 更新时间 :
  • 英文 :


我的全局用户覆盖了我的本地 git 用户。

以下是完整的上下文: 我有 2 个 Github 帐户,所以我想为这些存储库设置我的 ssh 密钥。

我已经尝试了所有这些指南。

第一条

第二条

第三条

第四条

这是我的~/.ssh/config

# Personal GitHub
Host github.com
HostName github.com
User mirkancal
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
# Yazılım Kafe
Host github.com-yazilimkafe
HostName github.com
User yazilimkafe
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_yazilimkafe
IdentitiesOnly yes

我的 yazilimkafe 回购的git remote -v输出

origin  git@github.com-yazilimkafe:yazilimkafe/git-dersi.git (fetch)
origin  git@github.com-yazilimkafe:yazilimkafe/git-dersi.git (push)

我相应地添加了本地用户名和电子邮件。 相关 SO 帖子 1 所以帖子 2

这是我的本地 gitconfig

[user]
name = yazilimkafe
email = mirkancaliskan.dev@gmail.com

所以我相信我已经准备好了,但是当我尝试使用git push origin master

它给了我:

ERROR: Permission to yazilimkafe/git-dersi.git denied to mirkancal.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

我认为在 ssh 方面,我没有问题,但我无法阻止我的全局用户不在存储库中覆盖我的本地用户。我的问题是,该怎么做?我在 ssh 方面做错了什么吗?

扩展此处发布的解决方案 推送到 .git 但拒绝了错误的用户,终于解决了您的具体情况,我已经重现了您的场景,这对我有用。

设置两个 GitHub 主机名

第 1 步:使用ssh-add加载您的所有身份。

第 2 步。将这些条目添加到.ssh/config

Host github-yazilimkafe
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_yazilimkafe
Host github-mirkancal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa

步骤 3. 克隆存储库或使用这些名称设置远程 URL

git clone github-yazilimkafe:yazilimkafe/git-dersi.git
git clone github-mirkancal:mirkancal/some-project.git

此时,您应该能够毫无困难地在任一沙盒中推送和获取,并且无需在两者之间重置代理。主机名将使您的代理在您通过该沙盒中的 ssh 登录时向 github 提供正确的身份。

还使用名称github.com

如果您还想使用主机名github.com,即直接克隆git@github.com/...,那么您必须担心您的 ssh 代理显示 ssh 密钥的顺序。使用ssh-add添加身份的顺序似乎并不重要。就我而言,.ssh/id_rsa是我的代理提供的默认密钥,但情况并非总是如此。

如果您使用的是gnome-keyring,则在此问题中使用单独文件夹的建议似乎有所帮助: https://unix.stackexchange.com/questions/429730/how-to-change-the-order-of-keys-in-gnome-keyring

但是,使用我的 Cygwin/OpenSSH 安装的 ssh 代理,我无法将.ssh/id_rsa_2设为默认值。

所以就我而言,我必须在.ssh/config中使用命名条目才能将.ssh/id_rsa_2与 GitHub 一起使用,但是当我想要.ssh/id_rsa时,我可以github.com使用名称,我的主键。

最新更新