SSH IdentitiesOnly=yes 转发我所有的密钥

SSH IdentitiesOnly=yes forwarding all my keys

我一辈子都弄不明白为什么我的 SSH 配置转发了错误的密钥。我有两把钥匙,我们称它们为 home_rsawork_rsa。我做了以下事情:

eval `ssh-agent`
ssh-add -K ~/.ssh/home_rsa
ssh-add -K ~/.ssh/work_rsa

这是我的 ~/.ssh/config 文件:

Host home
  ForwardAgent yes
  HostName home.com
  IdentityFile ~/.ssh/home_rsa
  IdentitiesOnly yes
  User home

Host work
  ForwardAgent yes
  HostName work.com
  IdentitiesOnly yes
  IdentityFile ~/.ssh/work_rsa
  User work

Host bitbucket
  IdentityFile ~/.ssh/home_rsa

Host bitbucket-work
  IdentityFile ~/.ssh/work_rsa

Host bitbucket*
  HostName bitbucket.com
  User git

当我运行以下…

ssh work
ssh git@bitbucket.org

…Bitbucket 报告说我正在使用我的 home 用户,尽管我清楚地登录到我的 work 服务器并且应该转发我的 work 密钥。如果我以相反的顺序添加我的 SSH 身份和 运行 上面相同的代码,Bitbucket 报告我正在使用我的 work 用户。 运行 ssh-add -l 从我的 work 服务器,我看到两个 SSH 密钥都在转发,但这不是 IdentitiesOnly yes 的工作吗?

对这里发生的事情感到很困惑。

Really confused as to what's going on here.

ForwardAgent 选项将连接转发到您的代理,其中包含所有密钥,并且不会将您的本地 ~/.ssh/config 转发到远程主机。您在 work 主机上的操作由您在该主机上的配置控制。

你想用它做什么?

您需要先在他们的网站上使用等效的 bitbucket 帐户更新您的 ssh 密钥(工作用户使用 work_rsa,用户使用 user_rsa)。那么也许这会有所帮助。

Host                bitbucket-work
HostName            bitbucket.org
IdentitiesOnly      yes
IdentityFile        ~/.ssh/work_rsa
User                work

用法:

ssh bitbucket-work