Я хотел бы переместить 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