我想将一个 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 -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"
总计 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
但是当我这样做时,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
所以 vagrant 正在覆盖我的.ssh
目录。
我把我的 SSH 文件放进去
conf.d/.ssh/id_rsa.medipop
然后做了:一旦我意识到 vagrant 用户
vagrant
不是ubuntu
(这就是为什么我对为什么我的 ssh 密钥似乎消失的问题感到困惑),它就非常有效。SSH代理转发呢?
确保您的 SSH 密钥首先在本地工作,然后添加
config.ssh.forward_agent = true
到您的密钥Vagrantfile
以通过。此处流浪详细信息:http: //docs.vagrantup.com/v2/vagrantfile/ssh_settings.html
您可以使用 Ruby 的核心文件模块,如下所示:
我真的很惊讶 Vagrant 没有默认提供这个!
查看Vagrant Shell Provisioner,您会将其添加到您的 Vagrantfile 中。
但是,根据您想要实现的目标,最好使用提供的 ssh 密钥来访问 Vagrant。
要生成要添加到您的快速配置文件
~/.ssh/config
,包括标识文件行,请运行$ vagrant ssh-config
。然后你可以$ ssh you-vagrant-box
而不是$ vagrant ssh
.要移动私钥和公钥,以下将起作用: