对Erlang端口映射程序守护进程短路
给定远程beam.smp服务的已知TCP端口和名称以及已知cookie,是否可以短路Erlang分发协议的Erlang port Mapper守护程序握手阶段,并直接建立到目标beam.smp服务的Erlang shell 协议记录如下: 在这里: 但我不清楚recv_challenge/send_challenge身份验证是否通过Erlang端口映射程序守护程序或绑定到特定端口的beam.smp服务进行对Erlang端口映射程序守护进程短路,erlang,erlang-shell,erlang-driver,Erlang,Erlang Shell,Erlang Driver,给定远程beam.smp服务的已知TCP端口和名称以及已知cookie,是否可以短路Erlang分发协议的Erlang port Mapper守护程序握手阶段,并直接建立到目标beam.smp服务的Erlang shell 协议记录如下: 在这里: 但我不清楚recv_challenge/send_challenge身份验证是否通过Erlang端口映射程序守护程序或绑定到特定端口的beam.smp服务进行 感谢您的时间。在Erlang VM(beam或beam.smp)之间进行身份验证。ep
感谢您的时间。在Erlang VM(beam或beam.smp)之间进行身份验证。epmd只处理端口注册。简单地对epmd进行短路并不十分容易,其他方法可能更适合您的实际需要 不幸的是,epmd不是默认分发协议(
inet\u tcp\u dist
)或its的选项。有两个未记录的选项,看起来您可以禁用epmd(-no_epmd
)或提供替代实现(epmd_module
)。但是,分发协议对epmd的依赖性不依赖于这些选项
所以你可以:
- 在代码服务器级别重写
模块(可能是最脏的方法)李>erl_epmd
- 提供可复制(或调用)的替代分发协议,调用erl_epmd的部分除外。主要是,您需要提供自己的
实现setup/5
listen/1
。在这种情况下,您可以将-no_epmd
传递到命令行
或者,您可以连接到epmd以注册侦听节点,以便使用默认协议创建外壳连接
如果epmd失去了对节点的跟踪(例如,它被杀死,不幸的是epmd是单点故障),这种方法特别有用。为此:
erl_epmd:register_node/2
(并发送精心编制的tcp_closed
消息,关闭(1)中建立的连接,并最终将丢失的节点重新注册到epmd谢谢保罗,这非常有用。