【问题标题】:rabbitmq access to vhost deniedrabbitmq对vhost的访问被拒绝
【发布时间】:2018-10-21 15:48:36
【问题描述】:

我设置了一个运行 rabbitmq-server 的控制器主机。从 nova 主机,我看到无法访问 nova-conductor。我检查了控制器主机,并在日志中看到以下内容:

  access to vhost 'None' refused for user 'openstack'

我在控制器主机上有如下的rabbitmq配置设置:

    rabbitmqctl list_users
    Listing users ...
    guest   [administrator]
    openstack       []

当我列出权限时,我看到 openstack 可以访问所有资源

    list_permissions
    Listing permissions in vhost "/" ...
    guest   .*      .*      .*
    openstack       .*      .*      .*

我能够通过 rabbitmq-server 进行身份验证 - 只是无法访问 / vhost。对于调试,我想设置任何客户端都可以访问任何资源(完全关闭访问控制)。有可能吗。

谢谢

【问题讨论】:

    标签: rabbitmq openstack rabbitmqctl


    【解决方案1】:

    这是由 Kombu 或 oslo.messages 中相对较新的更改引起的。以前,如果未提供 virtual_host,它将默认为 /。这已不再是这种情况。

    要使其正常工作,您的 transport_url 至少需要在末尾添加一个 /

    transport_url = rabbit://stackrabbit:secretrabbit@127.0.0.1:5672/

    您可以查看例如 devstack here 作为参考。

    该问题的实际上游修复可用here

    【讨论】:

    • 顺便说一句,我最近为 Magnum 门修复了这个问题 review.openstack.org/#/c/610740
    • 谢谢。我指定了 transport_url = rabbit://stackrabbit:secretrabbit@127.0.0.1:5672// 现在它可以工作了。我把我的安装搞砸了,也搬到了皇后区。
    【解决方案2】:
    access to vhost 'None' refused for user 'openstack'
    

    有东西试图访问名为None 的虚拟主机,但该虚拟主机不存在。默认虚拟主机名为/。由于None 是 Python 中的关键字,我怀疑某处存在应用程序错误或配置错误。

    无法禁用访问控制,因此我建议创建一个众所周知的用户和密码以使用。

    【讨论】:

    • 是否可以对消息进行低级别跟踪?真的坚持了一段时间。
    【解决方案3】:

    您还可以向虚拟主机发送 http 请求以获取/设置用户权限。您必须将主机名指定为 url 的一部分,但由于默认虚拟主机是 '/',因此您必须将其替换为 '%2F',即 http:// :/api/vhosts/%2F/permissions

    例如

     curl -i -u guest:guest -h "content-type:application/json" -GET http://localhost:15672/api/permissions/%2F/guest
    

    您可以访问 http://:/api/index.html

    找到完整的 api 选项列表

    【讨论】:

      猜你喜欢
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 2015-09-20
      • 1970-01-01
      • 2022-09-25
      • 2014-08-10
      • 2017-01-24
      相关资源
      最近更新 更多