Erlang:不允许的节点/可能是Cookie问题

时间:2009-01-16 19:13:16

标签: security erlang otp

尝试让两个erlang节点相互通信:一个在Ubuntu机器上,另一个在Windows XP上。

我们收到“来自不允许的节点的连接尝试”消息,该消息阻止一个节点从另一个节点接收消息。

他们都使用5.XXX版本的Erlang OTP。

两个节点都有相同的cookie(.erlang.cookie)

我们正在启动接收器节点:

erl -name fred@ipaddress

并使用'fred @ ipaddress'(单引号)调用其上的函数

我们关闭了防火墙。

那么还有什么阻止连接?

更新:我们使用erlang:get_cookie()检查两个节点上的cookie,值不同。这就是问题所在。我们认为我们通过将相同的.erlang.cookie文件放在我们在两台机器上运行erlang的目录中来设置cookie。但也许这是错误的地方?

更新2:感谢所有人的答案。我们选择Ranok作为我们的答案,因为它对我们很有用。我确信一些设置cookie的替代方法也可以。

6 个答案:

答案 0 :(得分:12)

此外,当你启动Erlang系统时,会有一个命令行标志-setcookie,它允许你在开始时指定cookie。

erl -name fred@ipaddress -setcookie FOOBAR

希望有所帮助, 雅各布

答案 1 :(得分:5)

首先检查每个节点的cookie。来自shell:

erlang:get_cookie().

如果它们不相同,则更改其中一个节点的cookie以匹配另一个:

erlang:set_cookie(node(), "newcookie").

如果一切正常,您需要了解为什么没有从配置文件或命令行arg中选择cookie设置。

答案 2 :(得分:3)

Erlang cookie应该在users目录中。不是应用程序目录。

所以你的是:

C:\Documents and Settings\InterstarUser\.erlang.cookie

如果我在Windows时间内记得正确的话,您可以在命令行中使用命令env查看HOME的位置。

答案 3 :(得分:2)

<强> net_adm:平()

从两个节点尝试net_adm:ping()。

http://www.erlang.org/documentation/doc-5.4.13/lib/kernel-2.10.13/doc/html/net_adm.html

答案 4 :(得分:2)

erlang:set_cookie(node(), 'newcookie').

erlang:set_cookie(node(), "newcookie").

答案 5 :(得分:1)

有几件事情浮现在脑海中:

  1. 你是否尝试过两个节点上的erlang:set_cookie设置cookie?
  2. 如果在$ HOME目录中找不到.erlang.cookie文件,则会创建一个文件。可能是.erlang.cookie文件中的一个不在一台机器上的正确位置吗?您可以在硬盘中搜索该文件,如果您发现的文件超过了您创建的文件,那么erlang可能会将其放在那里并正在使用它。