如何将我的部署密钥移动到 vagrant 中?

Kit*_*nde 9 vagrant

我想将一个 ssh 密钥移动到 vagrant 中并将它们放入~/.ssh,最简单的方法是什么?我的 Vagrant 文件中有以下内容:

config.vm.synced_folder "conf.d", "/svr/conf.d"
config.vm.provision :shell, 
:inline => "ls -l /svr/conf.d/.ssh"
Run Code Online (Sandbox Code Playgroud)

总共 4 -rw-r--r-- 1 vagrant vagrant 1670 Mar 26 08:19 id_rsa.mediapop

config.vm.provision :shell, 
:inline => "cp /svr/conf.d/.ssh/id_rsa.mediapop /home/ubuntu/.ssh/id_rsa"
config.vm.provision :shell, 
:inline => "ls -l /home/ubuntu/.ssh"
Run Code Online (Sandbox Code Playgroud)

总共 4 -rw------- 1 ubuntu ubuntu 0 Mar 22 08:56authorized_keys -rw-r--r-- 1 root root 1670 Mar 26 08:59 id_rsa

但是当我这样做时,vagrant ssh -c "ls -l ~/.ssh"我得到:

$ vagrant ssh -c "ls -l ~/.ssh"
total 4
-rw-r--r-- 1 vagrant vagrant 409 Mar 20 04:47 authorized_keys
Run Code Online (Sandbox Code Playgroud)

所以 vagrant 正在覆盖我的.ssh目录。

Kit*_*nde 13

我把我的 SSH 文件放进去conf.d/.ssh/id_rsa.medipop然后做了:

config.vm.synced_folder "conf.d", "/svr/conf.d"
config.vm.provision :shell, 
:inline => "cp /svr/conf.d/.ssh/id_rsa.mediapop /home/vagrant/.ssh/id_rsa"
Run Code Online (Sandbox Code Playgroud)

一旦我意识到流浪用户vagrant不是ubuntu(这就是为什么我在我的问题中对我的 ssh 密钥似乎消失的原因感到困惑)时,它的效果非常好。


小智 12

什么SSH代理转发?

首先确保您的 SSH 密钥在本地有效,然后添加config.ssh.forward_agent = true到您的Vagrantfile以通过。

此处的流浪者详细信息:http : //docs.vagrantup.com/v2/vagrantfile/ssh_settings.html


小智 5

您可以使用 Ruby 的核心 File 模块,如下所示:

  config.vm.provision "shell" do |s|
    ssh_pub_key = File.readlines("#{Dir.home}/.ssh/id_rsa.pub").first.strip
    s.inline = <<-SHELL
      echo #{ssh_pub_key} >> /home/vagrant/.ssh/authorized_keys
      echo #{ssh_pub_key} >> /root/.ssh/authorized_keys
    SHELL
  end
Run Code Online (Sandbox Code Playgroud)

我真的很惊讶 Vagrant 默认不提供这个!