linux配置ssh使用rsa-sha2需确保openssh≥7.2,重生成rsa主机密钥,修改sshd_config中pubkeyacceptedalgorithms和hostkeyalgorithms以启用rsa-sha2-256/512,并重启sshd服务。

Linux 中配置 SSH 服务使用 RSA-SHA2 签名算法,核心是更新服务器端的 HostKey 签名方式,并确保客户端与服务端在密钥交换和公钥认证阶段协商使用 rsa-sha2-256 或 rsa-sha2-512。注意:这不是简单修改配置文件某一行,而是涉及密钥重生成、sshd 配置调整和协议兼容性控制。
确认当前 SSH 服务是否支持 RSA-SHA2
运行以下命令检查 OpenSSH 版本及支持的公钥算法:
- ssh -V:确认版本 ≥ OpenSSH 7.2(RSA-SHA2 自 7.2 起默认启用)
-
sshd -T | grep -i pubkeyacceptedalgorithms:查看当前允许的公钥签名算法列表,应包含
rsa-sha2-256,rsa-sha2-512 - 若输出中只有
ssh-rsa,说明旧算法未被显式禁用,但新算法可能未启用或未优先协商
生成支持 RSA-SHA2 的 RSA 主机密钥
OpenSSH 默认生成的 RSA 密钥(ssh-keygen -t rsa)本身兼容 RSA-SHA2,但需确保服务端使用该密钥并启用对应签名方式。操作如下:
- 删除旧主机密钥(可选,建议先备份):
sudo rm /etc/ssh/ssh_host_rsa_key* - 生成新 4096 位 RSA 主机密钥:
sudo ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N "" - 生成后无需额外标注算法,OpenSSH 8.2+ 会自动为该密钥提供
rsa-sha2-256和rsa-sha2-512签名能力
强制 SSH 服务优先使用 RSA-SHA2 算法
编辑 /etc/ssh/sshd_config,添加或修改以下行:
-
PubkeyAcceptedAlgorithms +ssh-rsa,rsa-sha2-256,rsa-sha2-512(如需兼容旧客户端可保留ssh-rsa,但建议逐步移除) -
HostKeyAlgorithms +ssh-rsa,rsa-sha2-256,rsa-sha2-512(明确声明主机密钥签名支持) - 重启服务:
sudo systemctl restart sshd - 验证生效:
ssh -o PubkeyAcceptedAlgorithms=+rsa-sha2-256 user@localhost应能成功连接;再用ssh -Q sig可列出本地支持的所有签名算法
客户端连接时指定 RSA-SHA2 签名(可选增强)
若需确保某次连接强制走 RSA-SHA2,可在客户端命令中指定:
ssh -o HostKeyAlgorithms=rsa-sha2-512 -o PubkeyAcceptedAlgorithms=rsa-sha2-512 user@host- 或在
~/.ssh/config中为特定主机配置:Host example.com<br> HostKeyAlgorithms rsa-sha2-512<br> PubkeyAcceptedAlgorithms rsa-sha2-512
不复杂但容易忽略:RSA-SHA2 是签名机制,依赖于密钥存在且配置启用,而非密钥类型本身改变。只要使用标准 RSA 密钥 + OpenSSH ≥ 7.2 + 正确配置 PubkeyAcceptedAlgorithms,即可完成迁移。











