Ubuntu FTP/SFTP 报错:找不到匹配的 hostkey 算法 完整解决

Ubuntu FTP/SFTP 报错:找不到匹配的 hostkey 算法 完整解决

这个报错本质:本地客户端支持的主机密钥算法 和 Ubuntu 服务端开启的算法不兼容,常见两种场景:

  1. 你用 Windows Xshell/FileZilla/CRT 连 Ubuntu SFTP(FTP over SSH,最常见)
  2. 纯 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
相关推荐
Cx330❀1 小时前
【Linux网络】网络层协议 IP :从网络层原理到 Linux 内核源码
linux·运维·服务器·网络·tcp/ip·ai·ai编程
Gl�ria2 小时前
Linux 清理日志常用命令
linux·运维·服务器
天道jimmy3 小时前
VulnHub 系列:HA, Wordy
linux·服务器·web安全
君生我老3 小时前
Linux中调式器gbd/cgdb
linux
两斤牛肉一壶酒4 小时前
opencode 技能加载全挂背后,竟是不用系统的ripgrep
linux
j7~4 小时前
【Linux网络加餐(二)】《进程组,会话,控制终端,作业控制和守护进程》---详解
linux·运维·服务器·守护进程·会话·进程组·控制终端
天道jimmy4 小时前
VulnHub 系列:Prime,1
linux·运维·服务器
xiaoye-duck4 小时前
《Linux 网络编程》深入传输层 UDP 协议原理:端口、报文、缓冲区与内核源码解析
linux·网络·udp
好评1245 小时前
【Linux】数据链路层
linux·运维·网络