FileZilla 错误:Server unexpectedly closed network connection 无法连接到服务器
- 2019 年 12 月 23 日
- 筆記
结论:FileZilla Client v3.20.1 这一版兼容性是最高的
有些linux系统比较老(比如sles11sp3),新版的filezilla client版本比较高(实际是FileZilla FTP Client里的fzputtygen.exe和fzsftp.exe版本比较高)导致CipherSuite密码套件不兼容而出现下图报错,详情见filezilla官网bug说明(这个说明是我定位清楚问题后才意外搜到的,要是早点搜到也不必花好几个小时去排障了)
https://trac.filezilla-project.org/ticket/10958#no1
fzSftp started, protocol_version=8
错误:Server unexpectedly closed network connection
错误:无法连接到服务器
网上说的增加超时时间的办法是不行的,这不是超时时间短造成的问题
奇怪的是用xshell6可以正常ssh远程,用xftp6也可以正常sftp登录,因此断定跟filezilla软件本身有一定关系,但是我打开我2015年安装系统的台式机发现当时安装的file zilla登录sftp正常,怀疑是filezilla版本太新、sftp server(CVM SSH服务)太老的缘故。

我测试了十几版FileZilla Client发现了这个秘密

用3.20.1里的fzputtygen.exe和fzsftp.exe替换3.22.1里的同名文件后,3.22.1可以正常使用
另外,3.20.1-3.22.1之间的版本均可用3.20.1里的fzputtygen.exe和fzsftp.exe替换后正常使用,但跨protocol_version替换不行。其实这是服务端和客户端双方匹配的问题,要么客户端降低版本迁就服务端,要么服务端升级版本迁就客户端。
CipherSuite密码套件不兼容,详情见filezilla官网bug说明:
https://trac.filezilla-project.org/ticket/10958#no1


通过抓包,看到客户端拿ECDH去匹配,服务端没有ECDH,执行openssl ciphers -v没有显示ECDH

升级服务端openssh再匹配ECDH就有了

然后filezilla client连接sftp就正常了
升级openssh参考了网上一个脚本(见附件),首先是准备那些安装文件,那些文件里telnet-server-1.2-149.1.x86_64.rpm非常难找,我找了好久才找到,放到csdn上了https://download.csdn.net/download/blackbeautybake/11592987
脚本我做了4点修改
1、在脚本最开头安装开发编译环境:zypper in lsb_release lsb gcc gcc-c++ (不像centos可以直接加-y)
2、设置telnet服务(xinetd)开机启动: chkconfig –level 35 xinetd on
3、在脚本service sshd restart这句命令后做了如下修改
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
ln -s /usr/etc/sshd_config /etc/ssh/sshd_config
chkconfig –level 35 sshd on
4、在结尾/etc/init.d/xinetd restart之前做了这几句修改
把sed -i 's/no/yes/g' /etc/xinetd.d/telnet替换为mv /etc/securetty /etc/securetty.bak
做这句修改是为了支持root用户telnet登录,默认是不允许root用户telnet登录的