我的全局用户覆盖我的本地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
我的git remote -v
输出(用于yazilimkafe回购)
origin git@github.com-yazilimkafe:yazilimkafe/git-dersi.git (fetch)
origin git@github.com-yazilimkafe:yazilimkafe/git-dersi.git (push)
我已相应添加了本地用户名和电子邮件。 相关SO post 1 SO post 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部分做错了吗?
答案 0 :(得分:1)
针对您的具体情况,针对此处Push to .git but denied to wrong user , finally solved发布的解决方案进行了扩展,我转载了您的情况,这对我很有用。
设置两个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
但是,使用ssh代理的Cygwin / OpenSSH安装,我无法将.ssh/id_rsa_2
设置为默认值。
因此,在我的情况下,我必须在.ssh/config
中使用命名条目才能将.ssh/id_rsa_2
与GitHub一起使用,但是在需要github.com
时可以使用名称.ssh/id_rsa
,我的主键。