我已经安装了 FileZilla Pro Server 来托管我的 FTP/SFTP 站点。
如果我尝试使用 FileZilla 客户端登录 SFTP 服务器,它可以正常工作。
但是我们有另一家公司尝试登录并且遇到了错误。
2022-11-29 13:25:39.207 FTP<连接ftp.domain.com:22
processLoginCommand():连接 InbdProfId 时发生异常:5915 用户名:XXXXXXXXXedi
异常:com.transentric.agilink.ftp.core.exception.TransentricSSHException:com.sshtools.ssh.SshException:无法处理密钥交换 [com.sshtools.ssh.SshException] [com.sshtools.ssh.SshException]
我们一直无法找出原因。
FileZilla 有一些可以设置的公钥/私钥。我没有做任何这些。我在想,既然我可以使用常规用户名和密码使用 FileZilla 客户端登录,那么这应该没有必要。
但是 FileZilla Server 中有一个公钥部分。有人知道什么时候需要设置这个密钥吗?
答案1
SSH 密钥交换建立一次性会话密钥,并验证服务器通过其主持人密钥。这与用户身份验证不同,用户身份验证中的选项包括用户密钥或密码或 Kerberos。
ssh 协议的全部目的是建立一个加密通道,通过这个通道可以通过不安全的网络发送诸如密码之类的弱身份验证。与确保在将机密发送到 Web 服务器之前存在 TLS 加密的 https 会话相比。
密钥交换算法会随着时间推移而更新因为密码学研究使旧方法变得不安全。让他们更新 sftp 软件,以确保它具有现代算法。
在排除此故障时,请在服务器上启动 ssh 端口的数据包捕获。Wireshark 可以对 ssh 协议进行一些详细的剖析,以查看数据包中发生了什么。
让 ssh 客户端说出尝试了什么 KEX。例如,更高详细程度的 OpenSSH 客户端将准确说出客户端和服务器的算法。 ssh -vv
并检查 KEXINIT 事件周围的算法。您没有使用 OpenSSH,因此还请阅读有关您的实现中协商具体如何工作的文档。