linux - 脚本中的 ejabberdctl 命令给出错误 "Connection attempt from disallowed node"

标签 linux bash debian ejabberd

我在 Debian 7.6 服务器上运行 ejabberd-14.12,单节点。

我已经使用交互式 .run 包安装了 ejabberd。

我已经启动了 ejabberd(以 root 身份登录):

# /opt/ejabberd-14.12/bin/ejabberdctl start

日志表明:

ejabberd_app:start:69 ejabberd 14.12 is started in the node ejabberd@localhost

然后,我可以在我的/root 目录中看到 erlang cookie:

-r-------- 1 root     root       20 ago  9 00:00 .erlang.cookie

如果我尝试在命令行模式下创建用户,一切正常:

# /opt/ejabberd-14.12/bin/ejabberdctl register foo myhost.lchat.local foopwd

用户已创建(我可以在网络 GUI 上看到它)。

如果相同的命令嵌入到 .sh 脚本中(具有完整的命令路径),并由守护程序(由 root 拥有)启动,则会在 ejabberd error.log 中生成错误:

[error] <0.435.0> ** Connection attempt from disallowed node 'ctl-ejabberd@localhost' ** 

我认为这是一个安全问题,以避免未经授权的用户发出命令。

我该怎么做才能让脚本也接受该命令?

最佳答案

该错误意味着环境未使用相同的 cookie 从 command Erlang 节点连接到主 ejabberd 节点。

我猜脚本是作为另一个用户运行的(尽管是 root 用户)。将运行该脚本的用户需要在其主目录中具有相同的 .erlang.cookie 文件。

注意:您不应以 root、ejabberd 或任何其他类型的网络服务器身份运行服务器。这违反了安全最佳实践。

关于linux - 脚本中的 ejabberdctl 命令给出错误 "Connection attempt from disallowed node",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31906774/

相关文章:

linux - 如何将十六进制代码转换为 x86 指令

bash - 如何将大文本文件拆分为行数相等的小文件?

linux - 当 curl 因 404 错误而失败时如何停止执行安装脚本?

docker - 如何永久更改Docker容器中的$ PATH

linux - Debian 中收到的电子邮件的位置

linux - 如何在 Debian 上卸载 xdebug?

linux - 如何解决 SyntaxError : unexpected character after line continuation character in prestodb on linux?

linux - 查看带有正确时间戳的旧 ssh session 的命令历史记录

linux - Bash 脚本和 cron 异常

bash - 在 Bash 中预填充提示