SFTP 无法找到服务器

最近把树莓派升级到最新的 Ubuntu 系统后,ES Explorer 就再也无法连接 SFTP 了,一直提示 “无法找到服务器”。

这个提示也很有迷惑性,让我一度怀疑是不是我搭建的网络环境出了问题。但是在同一个设备上使用 Termux 登录又是可以成功的,所以基本排除了网络问题。

一开始以为是 ES Explorer 的问题,后来发现我的其他服务器还是能连上的,所以应该跟服务器有关。

于是登录到树莓派中查看日志:

$ sudo journalctl -u ssh

看到了如下错误信息:

Unable to negotiate with 192.168.x.x port xx: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1, ...

结合 Google,终于明白了是 OpenSSH 的加密算法不兼容的问题。官方文档也有相关介绍

根本原因就是,ES Explorer、Ghost Commander 这类工具内置的 SSH 使用的都是因为有安全问题已经被最新的 OpenSSH 默认禁用的方法,导致身份校验无法通过。

由于安全隐患的存在,最合理的办法应该是客户端升级。

但是这显然是不现实的。考虑到我的树莓派也没有被攻击的价值,于是使用了一个不推荐的方法,在服务端强行启用不推荐的弱加密算法。

修改配置文件 /etc/ssh/sshd_config,添加如下内容:

# Legacy changes
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +aes128-cbc

然后重启 SSH 服务即可:

$ sudo systemctl restart ssh

再打开 ES Explorer,果然一切恢复正常了。


© 2021