我想使用 GitHub 和两个不同的 SSH 密钥来访问两个不同的帐户。这没问题,我可以通过在我的配置中为主机名设置别名来轻松设置它。当此配置与我的 SSH 多路复用配置结合使用时,就会出现问题。我似乎无法使用特定于主机的声明覆盖我的默认 ControlPath。
也许这就是它的工作方式?也许这是一个错误?难道我做错了什么?
顺便说一句,我在 Mac 10.7 上。
这是我的配置:
Host *
ControlMaster auto
ControlPath ~/.ssh/connections/ssh-%r@%h:%p
Host github.com-X
TCPKeepAlive yes
ServerAliveInterval 60
ControlPersist 1h
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa_X
IdentitiesOnly yes
ControlPath ~/.ssh/connections/ssh-%r@%h-X:%p
Host github.com
TCPKeepAlive yes
ServerAliveInterval 60
ControlPersist 1h
我已经修改了一点,但似乎我总是得到 Host * 声明中指定的 ControlPath。
ssh -T git@github.com-X
使用 id_rsa_X 将我作为正确的用户登录,但它会在此处创建域套接字:
~/.ssh/connections/ssh-git@github.com:22
而不是:
~/.ssh/connections/ssh-git@github.com-X:22
所以后来当我尝试使用 id_rsa 发出 SSH 命令时,由于连接多路复用,我得到了 id_rsa_X 用户。换句话说:
ssh -T git@github.com
为密钥为 id_rsa_X 的用户提供一条问候消息。
您可以看到它读取了所有设置,然后尝试使用错误的 ControlPath。
$ ssh -vT git@github.com-X
OpenSSH_5.6p1, OpenSSL 0.9.8y 5 Feb 2013
debug1: Reading configuration data /Users/<username>/.ssh/config
debug1: Applying options for *
debug1: Applying options for github.com-X
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/Users/<username>/.ssh/connections/ssh-git@github.com:22" does not exist
<snip>
有任何想法吗?