使用与Windows主机操作系统代理转发的SSH,Vagrant Ubuntu来宾操作系统和Keepass / Keeagent

意图 :能够从任何开发环境部署到lan-example.com ; 无论是直接来自虚拟操作系统,还是任何单一操作系统,甚至是使用存储在Keepass中的一个SSH密钥的互联网。 我目前无法从Vagrant的操作系统中这样做,除非我明确生成自己的密钥并在每个部署服务器中对其进行授权。 我相信通过用户代理转发来做我想做的事情的方式,是的?


主机操作系统

  • Windows 7 x64
  • 由puttygen生成的SSH密钥: C:\Users\Administrator\.ssh\id_rsa.ppk
  • 用Keeagent Keepass存储我的SSH密钥。 Keeagent被设置为“Agent”模式
  • pageant.exe已安装但未运行
  • 如果我希望使用我的密钥连接到外部/内部LAN服务器,Putty将按照Keeagent – Putty不会将私钥位置存储在其configuration中。

C:\ Users \用户Administrator.ssh \ CONFIG

 Host 192.168.55.2 ForwardAgent yes 

Vagrantfile

 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.network :private_network, ip: '192.168.55.2' config.ssh.forward_agent = true # Why would I need to set this if Keeagent is handling things? config.ssh.private_key_path = '~/.ssh/id_rsa_jake_mitchell.ppk' end 

客户操作系统(Vagrant)

  • Ubuntu的x64
  • 192.168.55.2,只能通过主机访问
  • /home/vagrant/.ssh没有SSH密钥(我删除了它们)。 目的是让用户代理通过主机操作系统(Keeagent)转发来处理使用密钥

局域网主机(内网网站)

  • 假设它的域名是lan-example.com
  • 它只允许使用id_rsa.ppk公钥的SSH无密码login
  • 192.168.0.2
  • 用户代理转发在sshd中启用

问题:

什么工作(使用主机操作系统):腻子,连接到lan-example.com而不需要明确引用SSH密钥。

什么不起作用(使用来宾操作系统): ssh -v [email protected]因为它显示没有任何键使用。

我已经注意到Keeagent的testing版本,它允许我设置SSH_AUTH_SOCK。 我这样做了,并设置了一个NFS共享,允许来宾操作系统读取文件; 然而这并没有改变任何东西。 代理转发如何在这种types的环境中工作? Windows有什么不同,导致它失败?

通过networking文件系统共享套接字文件将不起作用,因为Windows套接字和Linux套接字是完全不同的野兽 – VM内的Linux不知道如何使用Windows套接字。 为了确保虚拟机可以在主机上使用身份validation代理,需要在ssh客户端和服务器上启用代理转发,然后通过主机ssh进入虚拟机(不能直接在VM控制台上login)。

假设:

  1. SSH服务器代理转发设置完成后,根据原来的post(我没有使用stream浪者,所以不能告诉);
  2. Keeagent设置完成并运行(我已经尝试过客户端模式,但有一些问题处理非RSA / DSA密钥,所以代理模式更安全);

puttyconfiguration文件设置下,勾选Connection→SSH→Auth下的“允许代理转发”,以打开客户端的代理转发。 另外,如果在主机上使用Cygwin ssh,那么有两个select:

  1. 安装ssh-pageant,并用cygwin自动启动(在~/.profile之类)。
  2. 在Keeagent设置中指定所需的Windows套接字文件位置,并将cygwin中的$SSH_AUTH_SOCKvariables设置为相应的位置。

要检查代理转发是否正常,请ssh进入VM并检查variables$SSH_AUTH_SOCK 。 如果它非空,并指向一个存在的Linux套接字文件,那么一切都应该是没有问题的。 如果这个variables是空的,那么缺less一些东西。