繁体   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