位于 的私钥~/.vagrant.d/insecure_private_key和与.vagrant/machines/default/virtualbox/private_keymy 位于同一目录中的私钥有什么区别Vagrantfile?为什么需要两者?我如何使用其中之一?
公共盒子随附的insecure key始终相同,随 vagrant 一起运送并位于~/.vagrant.d/insecure_private_key.
这允许 vagrant 在第一个 vagrant up 上使用 ssh。
然后(仍然在第一次运行时)vagrant 检查配置 key config.ssh.insert_key,如果它被设置为true(这是默认值,它会用一个生成的替换它,通常位于<current_directory>/.vagrant/machines/<machine_name>/<provider>/private_key.
请注意,目录结构暗示每台机器和每个提供程序都有一个密钥,因此同一 vagrant 环境中的多台机器/提供程序最终会使用不同的密钥。
对于这一点,该机器上的每个连接都将使用相同的生成密钥,直到您销毁它为止,并且该过程将在下一个第一个 vagrant up 中重现。对于大多数用例,此行为是标准和隐含的。
但是,由于可以创建自己的自定义 box,因此可以:
insecure key在框中,因此过程与公共框相同。config.ssh.private_key_path为对应的私钥。但正如文档所说:
您还可以通过将其设置为数组来指定多个私钥。这很有用,例如,如果您使用默认私钥来引导机器,但稍后用更安全的密钥替换它。
所以你实际上可以混合这两种行为。
一个常见的用例是当公司或团队要求(无论出于何种原因)每个用户使用真正的 ssh 密钥连接到机器时。
一个解决方案是使用insecure key默认值并在第一次使用时切换到用户键:
Vagrant.configure(2) do |config|
config.ssh.insert_key = false
config.ssh.private_key_path = [
'~/.ssh/id_rsa',
'~/.vagrant.d/insecure_private_key'
]
config.vm.provision 'file',
source: '~/.ssh/id_rsa.pub',
destination: '~/.ssh/authorized_keys'
end
Run Code Online (Sandbox Code Playgroud)
但是您也可以vagrant insecure key用公司/团队默认密钥替换,然后以相同的方式切换到用户特定的密钥。
无论如何,当不使用时,vagrant insecure key必须确保第一个运行的配置器始终是替换密钥的那个。
| 归档时间: |
|
| 查看次数: |
1202 次 |
| 最近记录: |