簡體   English   中英

打包程序 ssh_private_key_file 無效

[英]packer ssh_private_key_file is invalid

我正在嘗試在打包程序中使用 OpenStack 配置程序 API 來克隆一個實例。 到目前為止,我已經開發了腳本:

 {
 "variables": {
 },
 "description": "This will create the baked vm images for any environment from dev to prod.",
 "builders": [
  {
  "type": "openstack",
  "identity_endpoint": "http://192.168.10.10:5000/v3",
  "tenant_name": "admin",
  "domain_name": "Default",
  "username": "admin",
  "password": "****************",
  "region": "RegionOne",

  "image_name": "cirros",
  "flavor": "m1.tiny",
  "insecure": "true",
  "source_image": "0f9b69ee-4e9f-4807-a7c4-6a58355c37b1",

  "communicator": "ssh",
  "ssh_keypair_name": "******************",
  "ssh_private_key_file": "~/.ssh/id_rsa",
  "ssh_username": "root"
}
],
"provisioners": [
{
  "type": "shell",
  "inline": [
    "sleep 60"
  ]
}
]
}

但是在使用 packer build script.json 運行腳本時,我收到以下錯誤:

User:packer User$ packer build script.json 
openstack output will be in this color.

1 error(s) occurred:

* ssh_private_key_file is invalid: stat ~/.ssh/id_rsa: no such file or directory

我的 id_rsa 是一個以以下開頭和結尾的文件:

------BEGIN RSA PRIVATE KEY------

         key

------END RSA PRIVATE KEY--------

我認為這意味着它是 PEM 相關文件,所以我發現這很奇怪,所以我制作了 PACKER_LOG 的粘貼箱: http ://pastebin.com/sgUPRkGs

初步分析告訴我唯一的錯誤是缺少 packerconfig 文件。 谷歌搜索時,頂級搜索告訴我它是否沒有找到它的默認值。 這就是它不起作用的原因嗎?

任何幫助都會有很大幫助。 顯然在 github 支持頁面( https://github.com/mitchellh/packer/issues )上也有類似的問題,但我不明白發布的一些解決方案以及它們是否適用於我。

我盡量提供信息。 很高興在我能提供的地方提供任何信息!!

謝謝。

* ssh_private_key_file is invalid: stat ~/.ssh/id_rsa: no such file or directory

“~”字符對於操作系統來說並不特殊。 它僅對 shell 和某些其他選擇將其解釋為引用您的主目錄的程序而言是特殊的。

看來 OpenStack 並沒有將“~”視為特殊的,它正在尋找一個具有字面路徑名“~/.ssh/id_rsa”的密鑰文件。 它失敗了,因為它找不到具有該文字路徑名的密鑰文件。

更新 ssh_private_key_file 條目以列出密鑰文件的實際路徑名:

"ssh_private_key_file": "/home/someuser/.ssh/id_rsa",

當然,您還應該確保密鑰文件確實存在於您指定的位置。

必須在這里留下一個帖子,因為這只是讓我有點……我在~/.ssh/id_rsa使用了一個變量,然后我將其更改為使用完整路徑,當我這樣做時……我在變量值的末尾有一個空格通過 Makefile 從命令行傳入,導致此錯誤。 希望這可以節省一些時間。

肯斯特的回答讓您超越了最初的問題,但從您的評論中可以看出您仍然陷入困境。

根據我對您評論的回復,Packer 似乎不支持提供密碼,但是您可以告訴它向正在運行的SSH Agent詢問解密密鑰,如果在加載密鑰時提供了正確的密碼。 這應該允許您使用 Packer 使用保護 SSH 密鑰進行構建,只要您在嘗試構建之前將其加載到 SSH 代理中即可。

https://www.packer.io/docs/templates/communicator.html#ssh_agent_auth

SSH 通信器通過 SSH 連接到主機。 如果您在運行 Packer 的主機上配置了 SSH 代理,並且在通信器配置中啟用了 SSH 代理身份驗證,Packer 將自動將 SSH 代理轉發到遠程主機。

SSH 通信器具有以下選項:

ssh_agent_auth (boolean) - 如果為 true,本地 SSH 代理將用於驗證與遠程主機的連接。 默認為假。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM