Openssh在VM上使用主机上的Pageant进行身份validation

更新 :它看起来像networkingdevise是完全错误的,authenticationstream程应该是相反的方向。 所以这个问题现在是没有意义的。


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

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

长问题 :原来在主机和虚拟机上有多个密钥副本 – 主机上有Putty格式的副本,通过共享文件夹在虚拟机上有Openssh密钥格式,其中很多为了方便而没有密码保护。 但最近我觉得有必要巩固他们,增加更多的保护。 这些密钥用于远程pipe理,并通过版本控制系统(主要是Git)检查源代码。 这是要求:

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

第1点(允许Windows主机使用pageant进行身份validation)相对来说是微不足道的; git setup基本上是设置正确的$GIT_SSH环境variables。 不只是Putty,即使MinGW openssh也可以连接到pageant,通过将所有密钥存储在密码pipe理器(使用KeePass 2.x)中,并使用KeeAgent插件导出适合用作$SSH_AUTH_SOCK的套接字 。 看到这个ServerFault后的另一种方法。

但到目前为止,没有运气通过Linux VM访问选美。 我尝试了以下方法, 但失败了

  • SSH服务器安装在Windows主机上作为中间跳(我正在尝试使用Mobassh,但select应该没关系 – 继续阅读)。
  • 然后尝试从VM内执行远程plink.exe 。 这是类似于天真的方法ssh host1 ssh host2 ,这足够我的目的。
  • 但是 ,在Windows SSH服务器中运行时,plink.exe无法访问任何密钥。 在cmd直接运行plink.exe就行了。 在Windows上运行的大多数可用的SSH服务器都基于Cygwin。 看起来很像这个腻子/ cygwin组合错误报告 。

注意: 这里可能有类似的问题 ,但我没有使用stream浪汉。

看来原来的devise是完全错误的。 打开每个虚拟机上的sshd服务器会更简洁

 AllowAgentForwarding yes 

然后ssh到每个虚拟机。 这样,所有的虚拟机将自动使用来自主机的授权代理,而不需要安装任何ssh密钥。