2017-09-16 63 views

回答

1

公共包裝箱隨insecure key一起發貨,它總是與流浪者一起發貨,位於~/.vagrant.d/insecure_private_key

這允許vagrant在第一個vagrant上使用ssh。

然後(仍然在第一次運行)流浪漢檢查配置鍵config.ssh.insert_key,並且如果它被設置爲true(這是默認值,它由產生的一個,通常位於<current_directory>/.vagrant/machines/<machine_name>/<provider>/private_key替換它。

通知目錄結構暗示了你在同一個無業遊民環境每臺機器,每個提供商等等多個機/供應商一個鍵使用不同的密鑰而告終。

有關,這臺機器上的每個連接都使用相同的這一點生成密鑰,直到你摧毀它,並且這個過程將在下一個第一個流浪者再現。這種行爲對大多數用例來說是標準的和隱含的。

但是因爲一個can create his own custom box,一個可以:

  1. 添加insecure key在框中,所以這個過程是一樣的公共框。
  2. 在框中添加一個自定義公鑰,然後將config.ssh.private_key_path設置爲相應的私鑰。

但作爲documentation說:

您也可以通過設置這是一個數組指定多個私鑰。例如,如果您使用默認私鑰來引導機器,但稍後用更安全的密鑰替換它,則此功能很有用。

所以你可以混合兩種行爲。

一個常見的用例是當一個公司或團隊要求(無論什麼原因)每個用戶使用真正的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 

但你也可以與公司/團隊默認密鑰更換vagrant insecure key,然後在同一SWITH用戶特定鍵的方式。

總之,當不使用vagrant insecure key時,必須確保第一個配置器運行始終是替換密鑰的那個。

+0

謝謝你非常詳細的回答 –

+0

很高興幫助:)。我花了一些時間來理解Vagrant的那些特徵和行爲,這些特徵和行爲具有驚人的默認設置,但對某些不那麼不相關的有用細節缺乏明確性,特別是當它不像您期望的那樣工作時。 –