Я хотел бы переместить ключ ssh в vagrant и вставить их ~/.ssh
, какой самый простой способ сделать это? У меня есть следующее в моем файле Vagrant:
config.vm.synced_folder "conf.d", "/svr/conf.d"
config.vm.provision :shell,
:inline => "ls -l /svr/conf.d/.ssh"
всего 4-го-первого - одного бродячего бродяги 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 author_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?
Убедитесь, что ваш SSH-ключ сначала работает локально, а затем добавьте его
config.ssh.forward_agent = true
к вашемуVagrantfile
.Бродячие подробности здесь: http://docs.vagrantup.com/v2/vagrantfile/ssh_settings.html
источник
config.ssh.private_key_path
либо сделал бы что-нибудь ужасное, например, наличие ключа ssh в папке проекта с Vagrantfile. В случае использования его нужно как-то распространять, так что выбирайте свое зло!Вы можете использовать основной файловый модуль Ruby, например:
Я действительно удивлен, что Vagrant не предоставляет это по умолчанию!
источник
echo
аргументов:echo "#{ssh_pub_key}" >> /home/vagrant/.ssh/authorized_keys
иecho "#{ssh_pub_key}" >> /root/.ssh/authorized_keys
. Это также будет работать, если открытый ключ SSH содержит специальные символы (например,(
).Посмотрите на Vagrant Shell Provisioner , вы добавите это в свой Vagrantfile.
Однако, в зависимости от того, чего вы пытаетесь достичь, вероятно, лучше использовать прилагаемый ключ ssh для доступа к Vagrant.
Чтобы сгенерировать файл быстрой конфигурации, который будет добавлен к вам
~/.ssh/config
, в том числе запустить строку идентификатора файла$ vagrant ssh-config
. Вы могли бы тогда,$ ssh you-vagrant-box
а не$ vagrant ssh
.источник
~/
и/home/ubuntu
в том же месте? По умолчанию Vagrant homedir/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"
Вы можете столкнуться с проблемами прав доступа при чтении ключа ssh.~/.ssh
синхронизированную папку иcp
, но кажется, что Vagrant перезаписывает его впоследствии.Для перемещения как закрытых, так и открытых ключей будет работать следующее:
источник