认证失败(被远程节点拒绝),请检查 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/myprofileusers/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 服务器时,认证失败

Jenkins 作业失败,无法对远程执行 scp,权限被拒绝(公钥、密码)

SecureCRT连接Ubuntu失败(远程系统拒绝访问)

erlang分布式编程

SSH服务器拒绝了密码

在erlang中向远程节点端口发送消息