认证失败(被远程节点拒绝),请检查 Erlang cookie
Posted
技术标签:
【中文标题】认证失败(被远程节点拒绝),请检查 Erlang cookie【英文标题】:Authentication failed (rejected by the remote node), please check the Erlang cookie 【发布时间】:2018-06-02 07:08:13 【问题描述】:我按照官方文档中提到的方式安装了erlang和rabbitmq。但是,当我这样做时
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.0\sbin>rabbitmqctl add_user XXXXXX YYYYYYY
它给了我以下错误...
错误:无法在节点“rabbit@C001741998”上执行操作。请参阅下面的诊断信息和建议。
最常见的原因是:
目标节点无法访问(例如,由于主机名解析、TCP 连接或防火墙问题) CLI 工具无法通过服务器进行身份验证(例如,由于 CLI 工具的 Erlang cookie 与服务器的不匹配) 目标节点未运行除了以下诊断信息:
请参阅 http://rabbitmq.com/documentation.html 上的 CLI、集群和网络指南以了解更多信息 节点rabbit@C001741998查询服务器日志诊断
尝试联系:[rabbit@C001741998]
兔子@C001741998:
在 C001741998 上连接到 epmd(端口 4369)
epmd 报告节点“兔子”使用端口 25672 进行节点间和 CLI 工具流量
TCP 连接成功但 Erlang 分发失败
身份验证失败(被远程节点拒绝),请检查 Erlang cookie
当前节点详情:
节点名称:rabbitmqcli49@C001741998
有效用户的主目录:C:\Users\XYZ
Erlang cookie 哈希:QJlwBuAgrn8gN00mjqQYOw==
我将 erlang cookie 从我的用户主文件夹复制到 C:\Windows 文件夹。所以,他们都有相同的cookie。它仍然不断向我抛出错误。不知道应该如何修复。有什么帮助吗??
更新
我发现运行 rabbitmq 的最佳方式是从 docker 容器中运行。这样,您就无需担心任何 cookie 或依赖项,而且您可以在几分钟内启动并运行 rabbitmq。希望它可以帮助某人!
【问题讨论】:
检查以确保 RabbitMQ 使用的 cookie 文件实际上是相同的(我看到你复制了它,但你确定服务器使用的是你复制的文件,而不是其他文件?) 这更像是一个超级用户的问题吗? 【参考方案1】:检查你安装的 erlang 版本。 rabbitmq v3.7.0 与 erlang 的 v20.1.x 匹配。 supported version of Erlang
【讨论】:
【参考方案2】:文档说您应该以其他方式复制...
如果使用 Windows 服务,则应将 cookie 从 C:\Windows\system32\config\systemprofile\.erlang.cookie 复制到用户运行 rabbitmqctl.bat 等命令的预期位置。
见http://www.rabbitmq.com/cli.html
【讨论】:
我的预期位置是%HOMEDRIVE%%HOMEPATH%\.erlang.cookie
谢谢 Daniel 和 yohosuff。
我没有具有此确切路径的此类文件。我也不确定应该在哪个位置?
@Daniel 从系统配置文件复制 -> 预期位置。之后,当尝试加入集群时,它再次在 systemprofile 下创建了文件。请建议
1.复制 C:\Windows\system32\config\systemprofile\.erlang.cookie。 2. 粘贴到 %HOMEDRIVE%%HOMEPATH% 3. 替换 %HOMEDRIVE%%HOMEPATH%/.erlang.cookie 的现有副本它工作。谢谢【参考方案3】:
在我自己遇到这个确切的问题后,通过在我的帐户下运行服务解决了这个问题。如果您仍然遇到问题并已重新安装,请尝试此操作。
【讨论】:
这是我的问题。即使在替换了 erlang cookie 之后,我也遇到了同样的错误。但是在以我的用户权限运行该服务后,它起作用了....谢谢!【参考方案4】:以防万一,像我一样,你需要这些东西真正拼写出来:
-
在 FileExplorer 中导航到您的用户目录。 (在地址栏中粘贴
%userprofile%
。)
如果您已经有文件.erlang.cookie
,请将其删除。如果没有,请继续下一步。
在第二个 FileExplorer 中,导航到 C:\Windows\System32\config\systemprofile
。
找到文件.erlang.cookie
并将其复制到您的用户目录中。
现在您的rabbitmqctl
应该可以进行身份验证了。
【讨论】:
【参考方案5】:Robino 的回答帮助我解决了这个问题。
我有两个不同的.erlang.cookie
文件 -
管理员中的一位users/admin
和
另一个在users/myprofile
我将C:\Windows\System32\config\systemprofile
中的那个复制到users/myprofile
和users/admin
这两个位置。
我还将相同的 cookie 文件复制到我的 Rabbit 安装 %Rabbit_Home%\sbin
我正在运行我的 rabbitmqctl.bat
。
【讨论】:
这对开发人员来说是愚蠢的。那么每次我们都要复制cookie文件吗?开发者不能解决这个问题吗?【参考方案6】:我确实通过 Chocolaty 安装了 RabbitMQ 3.8.5 Erlang 22.3,并在 Windows 10 机器上遇到了同样的问题。 对我来说,替换 .erlang.cookie 文件的工作方式如上所述 here
Cookie 文件位置 在 Windows 上,cookie 文件位置取决于是否设置了 HOMEDRIVE 和 HOMEPATH 环境变量。
如果使用非管理员帐户安装 RabbitMQ,节点和 CLI 工具使用的共享密钥文件将不会放置到正确的位置,导致使用 rabbitmqctl.bat 和其他 CLI 工具时身份验证失败。
以下选项之一可用于缓解:
使用管理用户重新安装 RabbitMQ 手动将 .erlang.cookie 文件从 %SystemRoot% 或 %SystemRoot%\system32\config\systemprofile 复制到 %HOMEDRIVE%%HOMEPATH%。【讨论】:
以上是关于认证失败(被远程节点拒绝),请检查 Erlang cookie的主要内容,如果未能解决你的问题,请参考以下文章
Dmgr管理控制台访问IBM HTTP Administration 服务器时,认证失败