Como posso mover minha chave de implantação para vagrant?

8

Eu gostaria de mover uma chave ssh para vagrant e colocá-la em ~/.ssh , qual é a maneira mais fácil de fazer isso? Eu tenho o seguinte no meu arquivo Vagrant:

config.vm.synced_folder "conf.d", "/svr/conf.d"
config.vm.provision :shell, 
:inline => "ls -l /svr/conf.d/.ssh"

total 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"

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

mas quando eu faço vagrant ssh -c "ls -l ~/.ssh" eu recebo:

$ vagrant ssh -c "ls -l ~/.ssh"
total 4
-rw-r--r-- 1 vagrant vagrant 409 Mar 20 04:47 authorized_keys

Então vagrant está sobrescrevendo meu diretório .ssh .

    
por Kit Sunde 26.03.2013 / 09:16

5 respostas

12

Eu coloquei meu arquivo SSH em conf.d/.ssh/id_rsa.medipop e fiz:

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"

O que funcionou esplendidamente quando percebi que o usuário vagabundo é vagrant não ubuntu (é por isso que fiquei confuso em minha pergunta sobre por que minha chave ssh parecia desaparecer).

    
por 26.03.2013 / 11:38
12

O que acha de Encaminhamento de agentes SSH?

Certifique-se de que sua chave SSH funcione localmente primeiro adicione config.ssh.forward_agent = true ao seu Vagrantfile para passar.

Detalhes do Vagrant aqui: link

    
por 26.03.2013 / 11:31
5

Você pode usar o módulo Arquivo principal do Ruby, assim:

  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

Estou realmente surpreso que o Vagrant não forneça isso por padrão!

    
por 01.07.2015 / 08:42
1

Dê uma olhada no Vagrant Shell Provisioner , adicione isso ao seu Vagrantfile.

No entanto, dependendo do que você está tentando alcançar, é provavelmente melhor usar a chave ssh fornecida para acessar o Vagrant.

Para gerar um arquivo de configuração rápida a ser adicionado ao seu ~/.ssh/config , incluindo uma linha de arquivo de identidade em execução $ vagrant ssh-config . Você poderia então $ ssh you-vagrant-box em vez de $ vagrant ssh .

    
por 26.03.2013 / 09:24
0

Para mover chaves privadas e públicas, o seguinte funcionará:

config.vm.provision "shell" do |s|
  ssh_prv_key = File.read("#{Dir.home}/.ssh/id_rsa")
  ssh_pub_key = File.readlines("#{Dir.home}/.ssh/id_rsa.pub").first.strip
  s.inline = <<-SHELL
    echo Provisioning public ssh key...
    [ -e /home/vagrant/.ssh/id_rsa.pub ] && rm /home/vagrant/.ssh/id_rsa.pub
    touch /home/vagrant/.ssh/id_rsa.pub
    echo "#{ssh_pub_key}" >> /home/vagrant/.ssh/id_rsa.pub

    echo Provisioning private ssh key...
    [ -e /home/vagrant/.ssh/id_rsa ] && rm /home/vagrant/.ssh/id_rsa
    touch /home/vagrant/.ssh/id_rsa
    echo "#{ssh_prv_key}" >> /home/vagrant/.ssh/id_rsa

    echo Provisioning of ssh keys completed [Success].
  SHELL
end
    
por 02.06.2017 / 17:19

Tags