无法使用otp ssh模块连接到openssh

时间:2015-07-02 20:17:51

标签: ssh erlang openssh otp

我正在尝试使用erlang ssh模块连接到openssh(版本:SSH-2.0-OpenSSH_6.7p1 Debian-6)服务器。 OpenSSH服务器使用默认配置

执行以下操作:

ssh:connect(Server, 22, [MyFancyOptions])

给出:

Selection of key exchange algorithm failed

事实上,通过观看Wireshark,我看到了erlang客户端提出的密钥交换算法:

diffie-hellman-group1-sha1

和服务器:

curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1

不匹配......

问题: 有没有办法在erlang中连接到ssh服务器?

PS。是的,我看到了

%% TODO: diffie-hellman-group14-sha1 should also be supported.
%% Maybe check more things ...
verify_algorithm(#alg{kex = 'diffie-hellman-group1-sha1'}) ->

但是不要告诉我神圣的Erlang无法处理现代的ssh ......

2 个答案:

答案 0 :(得分:0)

是的,看起来您需要扩充服务器以提供额外的Kex算法,所以类似于:

  

KexAlgorithms curve25519-sha256 @ libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-赫尔曼-组1-SHA1

但是......这样做后,我没有成功做任何有用的事情。我在日志中看到错误:

  

sshd [8026]:dispatch_protocol_error:输入30 seq 7

所以看来Erlang ssh模块在现代ssh中存在一些重大问题......

答案 1 :(得分:0)

如果在/ etc / ssh / sshd_config中将openssh配置为openssh6.0默认值,则OTP 15中的Erlang ssh客户端将与openssh-6.7服务器一起使用,如下所示:

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour
KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

Erlang ssh客户端只支持ceshers aes128-cbc,3des-cbc,默认情况下在openssh-6.7中没有启用,至少在Debian openssh包中没有。