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登录的