我正在尝试使用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 ......
答案 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包中没有。