我在 Bitbucket 上有两个帐户,每个帐户都有一个 SSH 密钥。我的~/.ssh/config
帐户如下:
Host bitbucket.org
User git
IdentityFile ~/.ssh/bitbucket/account1
Host bitbucket.org
User git
IdenfityFile ~/.ssh/bitbucket/account2
问题是 SSH 代理似乎无法同时处理同一主机的两个密钥,我必须删除其中一个密钥才能使用另一个密钥。
有解决方法吗?
答案1
从外观上看,Bitbucket 有一个通配符 DNS 条目;任何随机子域名(*.bitbucket.org
)都将解析为与相同的服务器bitbucket.org
。
$ host bitbucket.org
bitbucket.org has address 207.223.240.182
bitbucket.org has address 207.223.240.181
$ host random.bitbucket.org
bitbucket.org has address 207.223.240.182
bitbucket.org has address 207.223.240.181
$ host clearlynotasubdomain.bitbucket.org
bitbucket.org has address 207.223.240.182
bitbucket.org has address 207.223.240.181
因此,您可以使用~/.ssh/config
不同的主机名设置不同的条目:
Host project1.bitbucket.org
User git
IdentityFile ~/.ssh/bitbucket/account1
Host project2.bitbucket.org
User git
IdenfityFile ~/.ssh/bitbucket/account2
事实上,我大胆猜测 Bitbucket 之所以有这个通配符就是为了这个目的。
答案2
您可以创建两个单独的 SSH 别名,即
Host bitbucket1
Hostname bitbucket.org
User git
IdentityFile ~/.ssh/bitbucket/account1
Host bitbucket2
Hostname bitbucket.org
User git
IdentityFile ~/.ssh/bitbucket/account2
只要你的 IdentityFile 不是默认的(请参阅我的问题),那么您就可以使用这些别名来选择要连接的账户。