在Vagrant中通过SSH连接到EC2

我pipe理一个有两个主要组件的服务:

  • 在EC2上运行的单个产品服务器
  • 在Vagrant中运行的一些临时环境

登台环境通过SSH连接到EC2环境,并使用位于客户端本地的私钥文件(* .pem)进行身份validation。 pem文件作为Vagrant实例本身的一部分进行分发。 注:我知道通过这种方式分发SSH密钥的安全风险,这是我inheritance的东西,而不是我现在可以改变的东西。

我需要在Vagrant实例的ssh-agent上添加一个私有的SSH密钥。 我是stream浪汉的新手,但我很熟悉如何做到这一点,例如:

exec ssh-agent bash sudo chmod 600 ~/ec2.pem ssh-add ~/ec2.pem 

蹭,我不知道如何得到这个在Vagrant工作。 我已经尝试了几种不同的方式来运行上面的,作为一个特权和非特权用户,例如

 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise32" config.vm.hostname = "staging" config.vm.provision "shell", path: "test-priv.sh" config.vm.provision "shell", path: "test-unpriv.sh", privileged: false end 

但最后,我总是必须login到Vagrant实例,并手动运行ssh-add命令才能正常工作。

任何帮助我如何通过Vagrantfile来实现这一点?