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