我的客户有一个旧版 SFTP 客户端应用程序,用于将文件上传到 Ubuntu 服务器。在服务器上使用 20.04 LTS 版本,一切正常。但是,在 22.04 LTS 服务器上测试时,连接失败,服务器报告以下日志消息:
sshd[1490]: 无法与 XXX.XXX.XXX.XXX 端口 59993 协商:未找到匹配的主机密钥类型。他们的提议:ssh-rsa、ssh-dss [preauth]
我可以使用相同的凭据从相同的客户端设备连接到其他客户端(例如 FileZilla),因此我确信问题局限于旧式客户端应用程序。
我猜这个问题是因为 22.04 中默认禁用了 ssh-rsa?我知道这个安全问题,但是在这种情况下,我无法触及客户端的任何东西,因为客户端已深度集成到他们的工作流程中。
有没有办法在服务器端“重新启用” 20.04 LTS 中存在的 SFTP 支持?如果可以,您能否给我一些必要步骤的指导。
提前致谢。
答案1
我在尝试从旧版 SSH 程序(我的情况是 Apache Guacamole)连接到 Ubuntu 22.04 时遇到了同样的问题。我通过在目录中创建/etc/ssh/sshd_config.d/
包含以下两行的自定义 conf 文件来修复此问题:
HostkeyAlgorithms ssh-dss,ssh-rsa
KexAlgorithms +diffie-hellman-group1-sha1
您也可以将这两行添加到文件中sshd_config
,但我更喜欢将我的自定义内容保存在单独的文件中。
sshd
进行更改后重新启动服务它就应该可以正常工作。
答案2
当我从 Ubuntu 20.04 升级到 22.04 时也遇到了同样的问题——我必须将 SFTP 与较旧的 IDE 客户端一起使用(以及为我的 MySQL 客户端 Navicat 创建 SSH 隧道),因此我必须将其添加到我的/etc/ssh/sshd_config
文件中:
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
KexAlgorithms diffie-hellman-group1-sha1,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
Ciphers 3des-cbc,aes128-cbc,aes128-ctr,aes256-ctr
然后重启sshd服务
感谢@user68186 的回答:Ubuntu 22.04 SSH 自 20.04 升级以来,RSA 密钥不起作用 这让我走上了正确的方向。