Erlang中SSH模块的使用-01

分享实验ErlangSSH by 达达 at 2011-02-08

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