Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么vagrant使用2个ssh私钥?_Vagrant - Fatal编程技术网

为什么vagrant使用2个ssh私钥?

为什么vagrant使用2个ssh私钥?,vagrant,Vagrant,位于~/.vagrant.d/unsecure_private_key的私钥与位于与我的vagrant文件相同目录中的.vagrant/machines/default/virtualbox/private_key之间有什么区别?为什么两者都需要?如何使用一个或另一个?公用箱附带不安全密钥,该密钥始终相同,随vagrant一起提供,位于~/.vagrant.d/unsecure\u private\u key中 这允许vagrant在第一个vagrant up上使用ssh 然后(仍在第一次运行)

位于
~/.vagrant.d/unsecure_private_key
的私钥与位于与我的
vagrant文件
相同目录中的
.vagrant/machines/default/virtualbox/private_key
之间有什么区别?为什么两者都需要?如何使用一个或另一个?

公用箱附带
不安全密钥
,该密钥始终相同,随vagrant一起提供,位于
~/.vagrant.d/unsecure\u private\u key

这允许vagrant在第一个vagrant up上使用ssh

然后(仍在第一次运行)vagrant检查配置密钥
config.ssh.insert_key
,如果它设置为
true
(这是默认值,它将替换为生成的密钥,通常位于
/.vagrant/machines///private_key

请注意,目录结构意味着每台机器和每个提供程序都有一个密钥,因此同一个vagrant环境中的多个机器/提供程序最终会使用不同的密钥

在这一点上,该机器上的每个连接都将使用相同的生成的密钥,直到您将其销毁,并且该过程将在下一个第一次漫游中重现。对于大多数用例来说,这种行为是标准的和隐含的

但是,由于存在一个,因此可以:

  • 在框中添加
    不安全密钥
    ,因此过程与公用框相同
  • 在框中添加自定义公钥,然后将
    config.ssh.private\u key\u路径
    设置为相应的私钥
  • 但正如《圣经》所说:

    您还可以通过将其设置为数组来指定多个私钥。例如,如果您使用默认私钥引导计算机,但稍后可能会用更安全的密钥替换它,则这非常有用

    所以你实际上可以混合这两种行为

    一个常见的用例是,公司或团队要求(无论出于何种原因)每个用户使用真正的ssh密钥连接到机器

    一种解决方案是使用
    不安全密钥
    作为默认值,并首先切换到用户密钥:

    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
    
    但是,您也可以用公司/团队默认密钥替换
    vagrant不安全密钥
    ,然后以相同的方式切换到用户特定密钥


    无论如何,当不使用
    vagrant不安全密钥时
    必须确保运行的第一个供应器始终是替换密钥的供应器

    公用箱附带始终相同的
    不安全密钥
    ,与vagrant一起提供,并且位于
    ~/.vagrant.d/unsecure\u private\u key

    这允许vagrant在第一个vagrant up上使用ssh

    然后(仍在第一次运行)vagrant检查配置密钥
    config.ssh.insert_key
    ,如果它设置为
    true
    (这是默认值,它将替换为生成的密钥,通常位于
    /.vagrant/machines///private_key

    请注意,目录结构意味着每台机器和每个提供程序都有一个密钥,因此同一个vagrant环境中的多个机器/提供程序最终会使用不同的密钥

    在这一点上,该机器上的每个连接都将使用相同的生成的密钥,直到您将其销毁,并且该过程将在下一个第一次漫游中重现。对于大多数用例来说,这种行为是标准的和隐含的

    但是,由于存在一个,因此可以:

  • 在框中添加
    不安全密钥
    ,因此过程与公用框相同
  • 在框中添加自定义公钥,然后将
    config.ssh.private\u key\u路径
    设置为相应的私钥
  • 但正如《圣经》所说:

    您还可以通过将其设置为数组来指定多个私钥。例如,如果您使用默认私钥引导计算机,但稍后可能会用更安全的密钥替换它,则这非常有用

    所以你实际上可以混合这两种行为

    一个常见的用例是,公司或团队要求(无论出于何种原因)每个用户使用真正的ssh密钥连接到机器

    一种解决方案是使用
    不安全密钥
    作为默认值,并首先切换到用户密钥:

    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
    
    但是,您也可以用公司/团队默认密钥替换
    vagrant不安全密钥
    ,然后以相同的方式切换到用户特定密钥


    无论如何,当不使用
    vagrant不安全密钥时
    必须确保运行的第一个供应器始终是替换密钥的供应器

    感谢您提供的非常详细的答案很高兴提供帮助:)。我花了一些时间来了解Vagrant上的这些功能和行为,它有惊人的默认值,但在一些不太相关的有用细节上缺乏明确性,特别是当它不能像您期望的那样工作时。感谢您提供的非常详细的回答(很高兴提供帮助:)。我花了一些时间来理解Vagrant的这些特性和行为,它有着惊人的默认值,但在一些不太相关的有用细节上缺乏明确性,特别是当它不能像你期望的那样工作时。