使用多个SSH密钥与VSTS

3
我正在尝试弄清楚如何在VSTS中使用多个SSH密钥。我有两个不同的VSTS账户,每个账户都有一个SSH密钥。只要我一次只添加一个密钥到SSH-Agent中,我就可以连接到该账户的仓库。但是,一旦我将两个密钥都添加到代理中,第二个账户始终会出现登录失败,因为它将使用第一个账户的密钥。我认为这可能与Windows上的SSH相关,但我在OSX上也遇到了同样的问题。
我的.ssh/config文件中相关部分目前如下所示。我已经尝试过更改主机值,但没有任何效果。
Host account1@vs-ssh.visualstudio.com
    Hostname vs-ssh.visualstudio.com
    User account1
    IdentityFile ~/.ssh/id_account1_vsts
    AddKeysToAgent yes
    UpdateHostKeys yes

Host account2@vs-ssh.visualstudio.com
    Hostname vs-ssh.visualstudio.com
    User account2
    IdentityFile ~/.ssh/id_account2_vsts
    AddKeysToAgent yes
    UpdateHostKeys yes

1
如果您使用 a1 和 a2 这样不同的名称代替 "Host",例如 git clone a2:DefaultCollection/_ssh/your-repo,那么这将确保实际使用您的 ssh 配置文件。 - VonC
从我找到的所有SSH和Git内容中,并没有明确指出主机是应该用作URL的别名,而不仅仅是配置条目的某种唯一标识符。我的配置文件中有很多条目,但它们都是针对不同的主机,所以我从来没有必要做出这种心理飞跃。感谢@VonC提供的缺失部分。 - Robb Vandaveer
等一下...我本来会把它作为答案发布的。 - VonC
我不确定这里的礼仪。你先回答了基本信息,但@starian chen-MSFT是第一个给出非常清晰完整答案的人。 - Robb Vandaveer
只是我的评论的简单复制,不用在意... - VonC
1个回答

3
您不能使用Host这样的值,应该像这样更换它:
Host hostaccount1
        Hostname vs-ssh.visualstudio.com
        User account1
        IdentityFile ~/.ssh/id_account1_vsts
        AddKeysToAgent yes
        UpdateHostKeys yes

   Host hostaccount2
        Hostname vs-ssh.visualstudio.com
        User account2
        IdentityFile ~/.ssh/id_account2_vsts
        AddKeysToAgent yes
        UpdateHostKeys yes

然后,您可以像这样克隆存储库:

git clone ssh://hostaccount2:22/_ssh/{repo}

git clone ssh://hostaccount1:22/_ssh/{repo}

(将account1@vs-ssh.visualstudio.com替换为hostaccount1,与hostaccount2相同)


那么...我刚才评论了什么? - VonC
这个答案中缺少一个我最近学到的必要部分。您还应该在每个AzDOS主机条目中添加IdentitiesOnly yes。否则,可能会首先使用另一个主机的缓存凭据,导致连接错误。 - Robb Vandaveer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接