SSHD配置HostCertificate无效:仍默认发送ed25519密钥而非指定证书
SSH证书认证配置失败排查(Ubuntu 22.04.1 LTS)
常见错误点及修复步骤
1. HostCertificate路径或权限错误
- 确认
sshd_config中HostCertificate指定的证书文件路径正确,证书需与对应主机密钥(如/etc/ssh/ssh_host_rsa_key)同名,后缀为.pub(例:/etc/ssh/ssh_host_rsa_key-cert.pub)。 - 证书文件权限必须为
root:root所有,权限设为600,否则sshd会直接忽略。执行命令修正:chown root:root /etc/ssh/ssh_host_rsa_key-cert.pub chmod 600 /etc/ssh/ssh_host_rsa_key-cert.pub
2. 默认主机密钥优先级未调整
Ubuntu 22.04的sshd默认优先发送ed25519、ecdsa密钥,即便配置了证书也会先使用默认密钥。需调整HostKey顺序,将带证书的密钥放在最前:
- 编辑
/etc/ssh/sshd_config,按如下顺序配置(以RSA证书为例,可根据实际密钥类型调整):HostKey /etc/ssh/ssh_host_rsa_key HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub HostKey /etc/ssh/ssh_host_ed25519_key HostKey /etc/ssh/ssh_host_ecdsa_key
3. 证书未正确签署
- 验证证书有效性,执行:
若输出无ssh-keygen -L -f /etc/ssh/ssh_host_rsa_key-cert.pubValid:标识或CA相关信息,说明证书无效,需重新用CA密钥签署主机公钥:
其中ssh-keygen -s /path/to/ca_key -I host-ubuntu -h -n your-hostname,your-ip /etc/ssh/ssh_host_rsa_key.pub-h表示签署主机证书,-n指定主机名/IP列表,-I为证书标识符。
4. sshd服务未正确重启
修改配置后必须重启sshd确保生效:
systemctl restart sshd
重启后检查服务状态确认无错误:
systemctl status sshd
5. 客户端缓存旧密钥
本地或Putty客户端可能缓存了旧主机密钥,导致仍弹出TOFU提示:
- Linux客户端:删除
~/.ssh/known_hosts中对应主机的条目。 - Putty:打开会话列表,选中目标主机后点击
Delete清除缓存密钥。
6. 配置文件语法错误
检查sshd_config语法是否合规:
sshd -t
根据输出提示修正配置中的语法问题。
内容的提问来源于stack exchange,提问作者ShadowSplicer
相关产品推荐
相关产品推荐

