VM 中的 Openssh 使用主机上的 Pageant 进行身份验证

VM 中的 Openssh 使用主机上的 Pageant 进行身份验证

更新:看起来网络设计完全错误,身份验证流程应该反过来。所以这个问题现在没有意义了。


当前设置:Windows 7 主机上的 Linux VM(假设是常见和最新的,如 CentOS 7.1 和 Ubuntu 15.04),使用 Virtualbox。

TL;DR 问题: 是否可以在虚拟机内运行 openssh不是使用本地 ssh-agent 进行密钥认证,但在 Windows 主机上使用 Peagent 吗?更复杂的设置是可以接受的。

长问题:最初主机和虚拟机上有多个密钥副本 — 主机上有 Putty 格式的密钥,虚拟机上有通过共享文件夹保存的 openssh 密钥格式的密钥,其中许多密钥没有密码保护,以方便使用。但最近我觉得有必要将它们整合起来并增加更多保护。这些密钥用于远程管理和通过版本控制系统(主要是 Git)签出源代码。要求如下:

  1. Windows 主机可以 ssh 到远程服务器,并且可以通过 ssh 使用 git。
  2. Linux VM 可以 ssh 到远程服务器,并且可以通过 ssh 使用 git。
  3. 密钥仅存储在主机上,而不是虚拟机上。(这意味着这不是 ssh 代理转发设置)

第 1 点(允许 Windows 主机使用 pageant 进行身份验证)相对简单;git 设置本质上就是设置正确的$GIT_SSH环境变量。不仅仅是 Putty,甚至 MinGW openssh 也可以连接到 pageant,方法是将所有密钥存储在密码管理器中(使用 KeePass 2.x)并导出适合使用的$SSH_AUTH_SOCK套接字KeeAgent 插件。 看这篇 ServerFault 帖子另一种方法。

但到目前为止,通过 Linux VM 访问 pageant 还没有任何成功。我尝试了以下方法但失败了

  • SSH 服务器安装在 Windows 主机上作为中间跳跃(我正在尝试莫巴什但选择并不重要——请继续阅读。
  • 然后尝试plink.exe在 VM 内执行远程操作。这类似于简单的方法,ssh host1 ssh host2但对于我的目的来说已经足够了。
  • 然而,plink.exe 在 Windows SSH 服务器中运行时无法访问任何密钥。直接在 上运行 plink.exe 即可cmd。Windows 上运行的大多数可用 SSH 服务器都基于 Cygwin。看起来与此非常相似putty/cygwin 组合错误报告

笔记:这里可能有一个类似的问题,但我没有使用 Vagrant。

答案1

看来最初的设计完全错了。在每个虚拟机上打开 sshd 服务器会更简洁

AllowAgentForwarding yes

然后通过 ssh 进入每个虚拟机。这样,所有虚拟机都会自动使用主机的身份验证代理,而无需安装任何 ssh 密钥。

相关内容