我使用三个不同的GitHub账户。
我已经正确地设置了ssh密钥(创建,添加到keyring,添加到github)。
执行ssh-add -l
返回:
3072 SHA256:/Vq3tN5FxtE64LALAe25GQr+MpIPbGg mail@first.com (RSA)
3072 SHA256:9NheazRnzMzicLALA6z70kQeO6tQcNZcePJw0RRk mail@second.com (RSA)
3072 SHA256:r7uaTSfE9ZXn7LALAGHIn4syyaKPPyXsKdK8Sjk mail@third.com (RSA)
在我的**~/.ssh/.config**文件中,我有:
# GITHUB FIRST
Host github.com-first-user
HostName github.com
User git
IdentityFile ~/.ssh/first-user
# GITHUB SECOND
Host github.com-second-user
HostName github.com
User git
IdentityFile ~/.ssh/second-user
# GITHUB THIRD
Host github.com-third-user
HostName github.com
User git
IdentityFile ~/.ssh/third-user
在我的全局git配置中,我没有添加任何用户/电子邮件配置。
每个存储库都包含正确的用户和电子邮件。
当我尝试推送时,它说first-user
没有权限。
ERROR: Permission to user/repo.git denied to first-user.
fatal: Could not read from remote repository.
我相信在什么地方读到过git使用它看到的ssh键,所以可能它看到了第一个键并使用了它。
在repo文件夹中执行git config --list --show-origin --show-scope
,我得到:
global file:/home/user/.gitconfig core.autocrlf=input
local file:.git/config user.name=Second
local file:.git/config user.email=mail@second.com
第一个用户没有任何设置。
执行git remote -v
返回:
origin git@github.com-second-user:user/repo.git (fetch)
origin git@github.com-second-user:user/repo.git (push)
相关说明:
执行ssh -T github.com-second-user
会传回 *Hifirst-user!,您已成功验证... *
注意:使用git cli和通过phpStorm UI使用git时都会发生此错误。
如何强制它为第二个用户使用第二个密钥?
谢谢你!
2条答案
按热度按时间myss37ts1#
加:
如果没有这个设置,ssh * 首先 * 尝试 * 所有 * 代理提供的身份,* 然后 * 尝试列出的文件。由于第一个代理提供的实体作为第一个用户,所以你可以作为第一个用户进入GitHub:第二个用户的密钥不会被尝试,GitHub会认为您是第一个用户。
对于
IdentitiesOnly yes
,ssh只尝试列出的IdentityFile
条目,按照它们出现的顺序(仍然根据需要从代理获取密钥,因此,如果计算机不是主系统,则只需将.pub
文件存储在有问题的计算机上)。(Git 在这里做的任何事情都没有任何区别:所有这一切都完全取决于ssh和GitHub。)
u7up0aaq2#
要在一台机器上使用多个github帐户:遵循此
./ssh/config中的配置文件示例
user 1和user 2是用户名帐户github,例如:就像这里的manhcntt 21
每个存储库,您必须为每个帐户github设置名称和电子邮件