小编pet*_*snd的帖子

使用特定于主机的声明更改 ssh ControlPath

我有一种情况,我需要使用两个不同的 SSH 密钥访问同一个 SSH 主机 (GitHub)。这没问题,我可以通过为主机名设置别名来轻松设置它。当此配置与我的 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
Run Code Online (Sandbox Code Playgroud)

我稍微修改了一下,但似乎我总是得到 Host * 声明中指定的 ControlPath。

ssh -T git@github.com-X
Run Code Online (Sandbox Code Playgroud)

使用 id_rsa_X 以正确的用户身份登录我,但它会在此处创建域套接字:

~/.ssh/connections/ssh-git@github.com:22
Run Code Online (Sandbox Code Playgroud)

而不是:

~/.ssh/connections/ssh-git@github.com-X:22
Run Code Online (Sandbox Code Playgroud)

所以稍后当我尝试使用 id_rsa 发出 SSH 命令时,由于连接多路复用,我得到了 id_rsa_X 用户。换句话说:

ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)

为密钥为 id_rsa_X 的用户给我一条问候消息。

有任何想法吗?

编辑:对 vgoff 评论的回应——不,它似乎正在阅读我的所有配置......

$ ssh -vT …
Run Code Online (Sandbox Code Playgroud)

ssh git github ssh-keys

4
推荐指数
1
解决办法
2589
查看次数

标签 统计

git ×1

github ×1

ssh ×1

ssh-keys ×1