Назад | Перейти на главную страницу

Как я могу переместить свой ключ развертывания в бродягу?

Я хотел бы переместить ssh-ключ в бродягу и вставить его ~/.ssh, как это проще всего сделать? В моем файле Vagrant есть следующее:

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

всего 4 -rw-r - r-- 1 vagrant vagrant 1670 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"

всего 4 -rw ------- 1 ubuntu ubuntu 0 22 марта 08:56 authorized_keys -rw-r - r-- 1 root root 1670 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

Так что бродяга перезаписывает мой .ssh каталог.

Я поместил свой 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"

Что отлично сработало, когда я понял, что бродячий пользователь vagrant не ubuntu (вот почему я был сбит с толку в своем вопросе, почему мой ключ ssh, казалось, исчез).

Что о Пересылка агента SSH?

Сначала убедитесь, что ваш SSH-ключ работает локально, затем добавьте config.ssh.forward_agent = true на ваш Vagrantfile пройти.

Бродячие подробности здесь: http://docs.vagrantup.com/v2/vagrantfile/ssh_settings.html

Вы можете использовать основной файловый модуль Ruby, например:

  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

Я очень удивлен, что Vagrant не предоставляет этого по умолчанию!

Взгляните на Бродячий поставщик снарядов, вы бы добавили это в свой Vagrantfile.

Однако, в зависимости от того, чего вы пытаетесь достичь, вероятно, лучше использовать предоставленный ключ ssh для доступа к Vagrant.

Чтобы сгенерировать файл быстрой конфигурации, который будет добавлен в ваш ~/.ssh/config, включая запуск строки файла идентификации $ vagrant ssh-config. Тогда ты мог бы $ ssh you-vagrant-box скорее, чем $ vagrant ssh.

Чтобы переместить как закрытые, так и открытые ключи, будет работать следующее:

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