我可以为同一主机和用户拥有多个 SSH 密钥吗?

我可以为同一主机和用户拥有多个 SSH 密钥吗?

我在 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 不是默认的(请参阅我的问题),那么您就可以使用这些别名来选择要连接的账户。

相关内容