一些服务(如 github 和 gitlab)会根据发送的 SSH 身份来区分用户。一种方法是在 ~/.ssh/config 中使用不同的主机别名:
Host user1-github
HostName github.com
User git
IdentityFile ~/.ssh/user1.pem
IdentitiesOnly yes
Host user2-github
HostName github.com
User git
IdentityFile ~/.ssh/user2.pem
IdentitiesOnly yes
这可以按预期工作,但是设置“IdentitiesOnly yes”会禁用 ssh-agent。如果我删除 IdentitiesOnly,则添加到代理的任何密钥都会提供给服务器,优先于显式 IdentityFile。
我希望 ssh 客户端向代理请求特定密钥,并仅将该特定密钥提供给服务器。据我所知,这在普通的 openssh 中是不可能实现的?!
我发现的最佳解决方法是删除最常用的 github 身份的 IdentitiesOnly,并使用辅助身份的提示。