RabbitMq学习笔记005---登录rabbitmq报错User can only log in via localhost

本文介绍了解决RabbitMQ使用guest用户远程登录失败的问题。通过修改rabbit.app配置文件中的loopback_users设置,允许guest用户从非localhost地址登录。

在访问管理界面使用guest用户登录时出现login failed错误。

到服务器上查询日志显示出现错误的原因是:HTTP access denied: user ‘guest’ - User can only log in via localhost。

解决:

rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。我的是3.7

如果想使用guest/guest通过远程机器访问,需要在rabbitmq配置文件中(找到/rabbitmq_server-3.6.14/ebin下面的rabbit.app文件)中设置 
loopback_users为[]。

下面这样修改:

C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.7\ebin\rabbit.app文件中

    {queue_index_embed_msgs_below, 4096},
        {default_user, <<"guest">>},
        {default_pass, <<"guest">>},
        {default_user_tags, [administrator]},
        {default_vhost, <<"/">>},
        {default_permissions, [<<".*">>, <<".*">>, <<".*">>]},
        {loopback_users, []},//这里,原来里面是:<<"guest">>现在把guest删除掉
        {password_hashing_module, rabbit_password_hashing_sha256},
        {server_properties, []},
        {collect_statistics, none},
        {collect_statistics_interval, 5000},
        {mnesia_table_loading_retry_timeout, 30000},
        {mnesia_table_loading_retry_limit, 10},
        {auth_mechanisms, ['PLAIN', 'AMQPLAIN']},
        {auth_backends, [rabbit_auth_backend_internal]},
        {delegate_count, 16},
        {trace_vhosts, []},

 

保存文件,然后重启:

启动监控管理器:rabbitmq-plugins enable rabbitmq_management

关闭监控管理器:rabbitmq-plugins disable rabbitmq_management

启动rabbitmq:rabbitmq-service start

关闭rabbitmq:rabbitmq-service stop

 

重启后就可以在飞localhost的电脑上去登录了

 

 

 

<think> 嗯,用户正在询问RabbitMQ登录时出现的"User can only log in via localhost"错误解决方案。这个问题很典型,主要涉及RabbitMQ的安全机制。 从引用内容看,关键点在于RabbitMQ默认的guest账户有本地访问限制,这确实是常见问题。用户提供的五条引用都指向同一个核心问题:guest账户的远程访问限制。引用[1][2][3]都提供了创建新用户的解决方案,而引用[3]还提到了修改配置文件的替代方案。 用户可能正在尝试远程管理RabbitMQ,遇到这个错误很困扰。考虑到生产环境安全性,我更推荐创建新账户的方案而非直接放开guest权限。需要给用户清晰的步骤说明: 首先最重要的是创建新用户,包括添加用户、设置管理员标签、配置权限三个关键步骤。每一步的rabbitmqctl命令都要准确,比如set_user_tags和set_permissions的参数顺序很重要。 作为补充方案,可以提到修改rabbitmq.conf配置的方法,但必须强调安全风险。特别是loopback_users=none这个设置会完全放开guest的远程访问,这在公网环境很危险。 最后应该提醒用户防火墙和端口的问题,因为有时15672端口被屏蔽也会导致连接失败。考虑到用户可能不熟悉Linux命令,需要给出具体的firewall-cmd示例。 用户可能还需要知道如何验证解决效果,所以列出用户列表查询和权限检查命令会很有帮助。整个回复要保持步骤清晰,把最安全的方案放在首位。 </think> RabbitMQ 出现 **"User can only log in via localhost"** 错误的原因是:默认的 `guest` 用户出于安全考虑,**仅允许通过本地主机 (`localhost`)** 登录进行管理。要解决此问题(尤其是远程登录),有以下两种主要方法: ### 🛠 方法一:创建新管理员用户 (推荐,更安全) 这是最安全、最标准的做法,避免修改默认安全策略。 1. **添加新用户** (将 `your_username` 和 `your_password` 替换为你的用户名和密码): ```bash rabbitmqctl add_user your_username your_password ``` 2. **将新用户设置为管理员角色**: ```bash rabbitmqctl set_user_tags your_username administrator ``` 3. **授予新用户访问虚拟主机 `/` 的完全权限**: ```bash rabbitmqctl set_permissions -p / your_username ".*" ".*" ".*" ``` * `-p /`: 指定虚拟主机为根虚拟主机 `/` (最常见)。 * `".*" ".*" ".*"`: 分别授予配置、写、读所有资源的权限。 4. **(可选) 验证用户和权限**: * 查看用户列表: `rabbitmqctl list_users` * 查看 `/` 虚拟主机的权限: `rabbitmqctl list_permissions -p /` **完成后,使用新创建的用户名和密码即可远程登录 RabbitMQ 管理界面。** ### ⚙ 方法二:修改配置文件允许 guest 远程登录 (不推荐,仅限测试环境) 此方法会降低安全性,**强烈不建议在生产环境中使用**。 1. **定位或创建配置文件**: * RabbitMQ 主配置文件通常是 `rabbitmq.conf` (较新版本) 或 `rabbitmq.config` (旧版本)。 * 常见位置:`/etc/rabbitmq/`。 * 如果目录下没有配置文件,可以从示例复制: ```bash cp /usr/share/doc/rabbitmq-server-*/rabbitmq.conf.example /etc/rabbitmq/rabbitmq.conf # 新格式 # 或 cp /usr/share/doc/rabbitmq-server-*/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config # 旧格式 ``` 2. **编辑配置文件**: * 使用文本编辑器打开配置文件(如 `vim` 或 `nano`)。 * 找到或添加 `loopback_users` 配置项: * **对于 `rabbitmq.conf` (新格式):** ```ini loopback_users = none ``` * **对于 `rabbitmq.config` (旧格式 Erlang term):** ```erlang {loopback_users, []} ``` * 设置 `loopback_users = none` (新格式) 或 `{loopback_users, []}` (旧格式) 表示**允许所有用户(包括 guest)从任何网络位置登录**。要仅允许特定用户远程访问(如只允许 guest),需指定用户名列表(新格式:`["guest"]`,旧格式:`{loopback_users, ["guest"]}`),但这通常不如方法一安全方便。 3. **保存并重启 RabbitMQ**: ```bash systemctl restart rabbitmq-server # 如果使用 systemd # 或使用 service 命令 ``` ### 🔍 重要检查和注意事项 1. **防火墙/Security Group**: 确保 RabbitMQ 管理端口(通常是 **15672**)在服务器防火墙和云服务商的安全组规则中是**开放**的,并且允许你的客户端 IP 访问。 ```bash # 示例 (CentOS 7 firewalld): firewall-cmd --zone=public --add-port=15672/tcp --permanent firewall-cmd --reload ``` 2. **地址和端口**: 在浏览器中访问时,确保使用正确的 **IP 地址** 和 **端口** (通常是 `http(s)://<服务器IP>:15672`)。 3. **生产环境安全**: **强烈建议在生产环境中使用方法一(创建新用户)**。禁用 `guest` 用户的本地限制会带来潜在安全风险[^1][^2][^3]。 4. **权限设置**: 使用方法一时,确保第 3 步 `set_permissions` 命令正确执行,为新用户赋予了访问所需虚拟主机(通常是 `/`)的足够权限[^1][^2][^4][^5]。 ### 📌 总结步骤 (推荐) ```bash # 1. 添加用户 rabbitmqctl add_user your_username your_strong_password # 2. 设置为管理员 rabbitmqctl set_user_tags your_username administrator # 3. 授予根虚拟主机权限 rabbitmqctl set_permissions -p / your_username ".*" ".*" ".*" # 4. (检查) 列出用户和权限确认 rabbitmqctl list_users rabbitmqctl list_permissions -p / # 5. 确保防火墙开放 15672 端口 # 6. 使用新用户远程登录 http://<server_ip>:15672 ``` 📚 **引用来源:** [^1]: RabbitMQ登录提示User can only log in via localhost问题解决步骤。 [^2]: rabbitmq默认用户guest访问报错解决方案,推荐创建新用户。 [^3]: RabbitMQ使用guest登录提示限制及两种解决方案(创建用户/修改配置),强调生产环境安全。 [^4]: Centos7安装后登陆提示的权限设置命令。 [^5]: 服务器访问出现错误的用户创建和权限设置示例。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

添柴程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值