今天实验了一下Erlang中建立SSH连接的基本操作,中间遇到一些问题,这里记录一下。以下SSH客户端的操作在Windows主机和Linux主机上都已经过实际验证,所连接的服务器为Linux操作系统。
如果是Windows主机,需要安装一个Win32 OpenSSL才能进行以下实验。
首先需要确认当前目录有.ssh文件夹,如果没有这个文件夹就会出现奇怪的 {error,"Key exchange failed"} 错误,通常是没有这个文件夹的,可以通过以下命令创建:
mkdir .ssh
然后进入erlang的shell。
要使用ssh模块,还需要确保crypto和ssh两个应用都已启动,默认是没有启动的。可以通过以下代码分别启动这两个应用(这里模拟Eshell的操作界面):
Erlang R14B01 (erts-5.8.2) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.8.2 (abort with ^G)
1> crypto:start().
ok
2> ssh:start().
ok
然后就可以使用ssh:shell函数在当前EShell中打开Linux的shell,这个shell会独占EShell的输入,除非exit退出,或者断开连接:
{ok, Conn} = ssh:connect("ip or host name", 22, [
{user, "the user name"},
{password, "the password"},
{silently_accept_hosts, true},
{user_interaction, false}
]).
OK,到此为止。做这个实验的目的是使用sftp和ssh从主节点更新从节点的程序并启动应用,如有更进一步的实验进展会另外分享。
原标签已从 2023-12-16 存档快照 恢复。本文按原站快照恢复排版,并接回已核实的本地图片。查看恢复说明