【问题标题】:Chef PEM file invalid or mis-named?Chef PEM 文件无效或命名错误?
【发布时间】:2020-02-07 05:02:20
【问题描述】:

我的系统用户名是 myuser,但我尝试使用 chef-validator.pemblah.pem 文件引导机器,并收到以下错误消息:

ERROR: Failed to authenticate to https://mychef01 as blah with key
/etc/chef/blah.pem.
Response: Invalid signature for user or client 'blah'

这是否意味着blah.pem 文件无效,或者是否意味着它需要匹配我的系统用户名(即myuser.pem)?无论哪种方式,根本问题是什么?解决方法是什么?

【问题讨论】:

  • blah.pem 来自哪里?通常,当节点找不到客户端密钥时,它会将自己注册为客户端(使用验证器密钥)。
  • 感谢@StephenKing (+1) - 我正在构建一个自动化系统,它将通过 Chef 引导和配置节点。我去了厨师服务器并创建了这个blah 用户并下载了它的blah.pem 文件。我现在在我的机器上进行本地测试(我的用户名是myuser),我想知道我的用户名是否必须与 PEM 文件的名称匹配,或者 PEM 文件是否有问题/无效。
  • pem文件会自动生成。只需配置一个节点名称(可选,如果没有,厨师将使用主机名)并传递验证密钥。无需手动注册客户端。
  • 如果您真的想手动创建它,client.rb 应该将node_name 属性设置为您创建的名称,客户端密钥可以使用client_key 属性命名为您想要的任何名称在client.rb 中匹配,Linux 上默认为/etc/chef/client.pem,Windows 上默认为c:/chef/client.pem
  • 你在webui中创建用户而不是客户端,客户端可以编写自己的节点。这是主要的区别。用户为刀,客户端为节点。并且运行 chef 的用户应该无事可做(而且您将无法使用此方法创建 2 个 VM)

标签: chef-infra knife


【解决方案1】:

在厨师的管理选项卡中,name-validator.pem 是从组织级别生成的,而 name.pem 是从用户级别生成的。您可能尚未生成用户级别 pem。

【讨论】:

    【解决方案2】:

    这是客户端密钥的问题。我也遇到过这个问题。我为用户重新生成了密钥并添加到 {user}.pem 文件中,它对我有用。

    【讨论】:

    • “我重新生成了密钥”——您可以通过在此处提供语法来真正改进此答案。
    【解决方案3】:

    我也遇到了同样的问题。就我而言,我是从左侧边栏中生成密钥并遇到同样的问题。但是当我点击用户行“Gear”(动作列),然后点击重置键再次下载(并将其放在.chef目录中),它就可以正常工作了。

    可能发生的其他事情是您的 .pem 文件在 knife.rb 文件中未正确引用

    希望有帮助

    【讨论】:

      【解决方案4】:

      确保 pem 文件从 Chef 服务器复制到工作站机器,

      chef-server-ctl user-create USERNAME FIRSTNAME LASTNAME email-id@domain.com 'password' --filename ~/.chef/user-chef.pem
      
      chef-server-ctl org-create ORG_NAME "orgname" --association_user USERNAME --filename ~/.chef/org-chef.pem
      

      将这些 *.pem 文件复制到工作站后,在 ruby​​ 文件 config.rb 中进行配置

      node_name                'node_name'
      client_key               "user-chef.pem"
      

      node_name 的值应该是在 Chef 服务器上创建的 USERNAME。

      更改 client_key 下的 user-chef.pem 以反映您的用户的 .pem 文件。

      【讨论】:

        【解决方案5】:

        在启动 kitchen test 后,我遇到了相同的错误 Response: Invalid signature for user or client 'blah',但有不同的解决方案。

        我犯了一个错误,我的Policyfile.rb 包含一个default_source 部分,该部分指向与设置为当前活动不同的 CHEF 服务器组织。

        default_source :chef_server, 'https://chef.awesome.com/organizations/bacon' do |s|
          s.preferred_for 'chef-client', 'cron', 'apt'
        end
        

        而我当前活动的刀配置文件需要一个不同 pem 文件,而不是包含我的某些资源的首选来源的组织。

        【讨论】:

          【解决方案6】:

          您需要从左侧边栏中选择用户选项卡,它会在那里显示您的用户名。

          然后您需要点击右侧的齿轮图标,然后点击Reset Key。它将为您生成一个私钥,您需要将其保存在您的.chef 目录中,名称为<username>.pem。在 knife.rb 文件中也保留相同的配置。例如

          client_key               "#{current_dir}/<username>.pem"
          

          【讨论】:

            【解决方案7】:

            进入https://api.chef.io/organizations

            管理选项卡。转到用户菜单。生成新密钥。然后转到 Organitations 菜单项并生成一个新的 knie 和新的密钥验证器。再次运行它。

            【讨论】:

            • 我认为重新生成验证密钥不是这个问题的最佳建议(错误消息应该不同)。请注意,重新生成验证密钥会使之前的验证密钥无效。
            • 好吧。我收到了同样的消息错误,我写的内容解决了我的问题。
            猜你喜欢
            • 2017-10-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多