gpt4 book ai didi

ssh - Erlang客户端设置ssh key

转载 作者:行者123 更新时间:2023-12-04 12:53:10 25 4
gpt4 key购买 nike

我正在使用 :client用于连接到外部节点并在那里远程使用代码的 API,但问题是我正在使用 Dokku 进行部署,如果我可以在运行时指定 ssh key ,那就太好了。

现在我的代码看起来像这样:

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,并且可以采用包含 key 文件的“user_dir”参数,但我不确定如何从 :client 设置它)

有任何想法吗?

最佳答案

-rsh选项是 intended to point to a different executable :

%% Alternative, if the master was started as
%% 'erl -sname xxx -rsh my_rsh...', then 'my_rsh' will be used instead
%% of 'rsh' (this is useful for systems where the rsh program is named
%% 'remsh').

这些天人们使用 ssh而不是 rsh . (大约 10 年前,安全团队在之前的工作中需要 ssh,即使两台机器都在同一个隔离网络上。)由于命令行界面是兼容的,一旦您设置了 key ,只需指向一个新的可执行文件通常就可以工作正确起来。所以使用 -rsh 是有意义的。指向 ssh 的选项反而。

该参数可用于将其他参数传递给 ssh 似乎也合乎逻辑。您尝试的命令。然而, the code假设传递的字符串是您的 PATH 中可执行文件的名称.它使用 os:find_executable 寻找可执行文件和 ssh -i /path/to/id_rsh可能不存在。

但是,您可以利用此功能指向任何可执行文件,包括 shell 脚本。例如,你可以写一个 ssh-wrapper看起来像:
#!/usr/bin/env ksh
exec ssh -i /path/to/id_rsh $@

然后使用 -rsh /path/to/my/ssh-wrapper以便 :slave.start使用正确的包装器 ssh指定的选项。我发现包装器技术也使 future 的维护更容易,因为连接逻辑保持在一个地方。

帽尖到 this comment from Martin S.

关于ssh - Erlang客户端设置ssh key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33986632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com