我正在使用
目前,我的代码大致如下:
:client
API连接到一个外部节点,并远程在那里使用代码。我使用Dokku进行部署,如果我可以在运行时指定一个ssh密钥,那就太好了。目前,我的代码大致如下:
def start(host) do
allow_boot to_char_list(host)
{:ok, slave} = :slave.start(to_char_list(host), :slave, inet_loader_args)
load_paths(slave)
{:ok, slave}
end
inet_loader_args == ' -rsh ssh -loader inet -hosts #{master_node_ip} -setcookie #{:erlang.get_cookie}'
我尝试将-rsh参数设置为"-rsh ssh -i /path/to/id_rsh"
,但它似乎完全忽略了这一点。我不确定它是如何实现的,对于:client
的Erlang文档对我来说有些难以理解(我可以看到它在某个地方使用:ssh
,并且可以接受一个“user_dir”参数,其中可以包含一个密钥文件,但我不知道如何从:client
设置它)。
有什么想法吗?
-rsh
参数被传递给:os.find_executable
,在您的示例中,它将寻找一个可执行文件ssh -i /path/to/id_rsh
,但显然不存在。 我认为你最好做一些像-rsh /path/to/my/ssh-wrapper
这样的事情,并让ssh-wrapper
成为一个shell脚本,执行exec ssh -i /path/to/id_rsh $@
。 - Martin S.