Ubuntu FTP/SFTP 报错:找不到匹配的 hostkey 算法 完整解决
这个报错本质:本地客户端支持的主机密钥算法 和 Ubuntu 服务端开启的算法不兼容,常见两种场景:
- 你用 Windows Xshell/FileZilla/CRT 连 Ubuntu SFTP(FTP over SSH,最常见)
- 纯 vsftpd FTP(无 SSH,极少报这个错,基本是 SFTP)
一、先分清:你是 SFTP 还是普通 FTP
- 端口 22、协议 SFTP/SCP → SSH 底层,才会报 hostkey 算法
- 端口 21、FTP/FTPS → 和 hostkey 无关,报错不一样
方案 1:修改 Ubuntu SSH 服务端(推荐,一劳永逸)
登录 Ubuntu,编辑 ssh 配置
bash
sudo nano /etc/ssh/sshd_config
在文件末尾添加兼容密钥算法(适配老旧客户端):
bash
# 主机密钥算法
HostKeyAlgorithms ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519
# 密钥交换算法(配套)
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
# 加密算法
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr
# MAC校验
MACs hmac-sha1,hmac-sha2-256,hmac-sha2-512
保存退出:Ctrl+O → 回车 → Ctrl+X
校验配置是否写错(必须执行,否则 ssh 重启失败):
bash
sudo sshd -t
无输出代表正常,重启 ssh 服务:
bash
sudo systemctl restart sshd