Erlang中SSH模块的使用-01
今天实验了一下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从主节点更新从节点的程序并启动应用,如有更进一步的实验进展会另外分享。