Eu gostaria de passar uma chave ssh para vagrant e colocá-las ~/.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 22 de março 08:56 autorizado_keys -rw-r - r-- 1 raiz raiz 1670 26 de março 08:59 id_rsa
mas quando 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
Tão vagabundo está substituindo meu .ssh
diretório.
E o encaminhamento do agente SSH?
Certifique-se de que sua chave SSH funcione localmente primeiro e depois adicione
config.ssh.forward_agent = true
à suaVagrantfile
para passar.Detalhes do Vagrant aqui: http://docs.vagrantup.com/v2/vagrantfile/ssh_settings.html
fonte
config.ssh.private_key_path
ou faria algo terrível como ter a chave ssh na pasta do projeto com o Vagrantfile. Ele deve ser distribuído de alguma forma no caso de uso, então escolha seu mal!Você pode usar o módulo File principal do Ruby, assim:
Estou realmente surpreso que o Vagrant não forneça isso por padrão!
fonte
echo
argumentos:echo "#{ssh_pub_key}" >> /home/vagrant/.ssh/authorized_keys
eecho "#{ssh_pub_key}" >> /root/.ssh/authorized_keys
. Isso também funcionará se uma chave SSH pública contiver caracteres especiais (por exemplo(
).Dê uma olhada no Vagrant Shell Provisioner , você adicionaria 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ápido a ser adicionado ao seu
~/.ssh/config
, incluindo uma linha de arquivo de identidade executada$ vagrant ssh-config
. Você poderia então, em$ ssh you-vagrant-box
vez de$ vagrant ssh
.fonte
~/
e/home/ubuntu
é o mesmo local? O homedir padrão do Vagrant é/home/vagrant
.git_ssh_key = File.read('/svr/conf.d/.ssh/id_rsa.mediapop'); config.vm.provision :shell, :inline => "cat >>/home/vagrant/.ssh/id_rda.mediapop <<EOF #{git_ssh_key} EOF"
Você pode ter problemas de permissão ao ler a chave ssh.~/.ssh
usando uma pasta sincronizada ecp
, mas parece que o vagrant o substitui posteriormente.Para mover chaves privadas e públicas, o seguinte funcionará:
fonte