我需要为与同一域但不同子路径相关的 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”。