在 SSH 配置中匹配不同的子路径

在 SSH 配置中匹配不同的子路径

我需要为与同一域但不同子路径相关的 SSH 密钥设置配置。我想要类似这样的配置:

Host                domain.com/sub1
    Hostname        domain.com/sub1
    User            user1
    IdentityFile    ~/.ssh/key1

Host                domain.com/sub2
    Hostname        domain.com/sub2
    User            user2
    IdentityFile    ~/.ssh/key2

这样当我这样做时git clone domain.com/sub1...它使用,~/.ssh/key1而当我这样做时git clone domain.com/sub2...它使用~/.ssh/key2

如何在不改变 git 存储库配置的情况下做到这一点?

谢谢

答案1

SSH 没有“子路径”的概念(因为它只关心服务器访问),因此您无法按照自己想要的方式进行配置。您可以使用与Match远程主机和远程用户匹配的条目,但无法匹配任何路径元素,因为 SSH 无法了解您将要连接建立后即可访问。

与主机和用户匹配的条目Match如下所示:

Match user="user1" host="domain.com"
  IdentityFile ~/.ssh/key1

Match user="user2" host="domain.com"
  IdentityFile ~/.ssh/key2

它实际上按照您的配置方式工作,但无论您尝试访问哪个存储库,“domain.com”上的“user2”都会使用“key2”。

相关内容