系统是Rocky Linux 9.6,用比对工具compare beyond 工具中私钥连接连不上
背景
系统是Rocky Linux 9.6,用比对工具compare beyond 工具中私钥连接连不上
错误截图:
可以查询服务器端的日志
tail -f /var/log/secure
定位到原因
从 OpenSSH 8.8 开始,默认禁用了 ssh-rsa中的 SHA-1加密方法,被认为不安全)
补充知识
RSA密钥文件格式(如id_rsa)本身不包含签名方式信息,实际签名算法由客户端在连接时动态选择。因此密钥文件无需重新生成即可支持新签名方式
原因分析
1.签名算法升级
旧版工具使用传统的ssh-rsa(SHA-1)签名方式,而现代SSH服务端(如OpenSSH 8.8+)默认要求rsa-sha2-256或rsa-sha2-512签名
新版Beyond Compare升级了加密库,支持RFC 8332规范的SHA-256/SHA-512签名方案,即使密钥类型仍显示为ssh-rsa,实际签名方式已更安全
2.协议协商改进
旧版工具可能无法正确处理服务端的算法协商请求,而新版能动态选择服务端支持的签名方式。例如:
旧客户端 → 仅提供SHA-1签名 → 服务端拒绝
新客户端 → 提供SHA-1/SHA-256/SHA-512 → 服务端选择SHA-256
这一过程对用户透明,密钥文件本身无需修改
3.密钥文件的兼容性
RSA密钥文件格式(如id_rsa)本身不包含签名方式信息,实际签名算法由客户端在连接时动态选择。因此密钥文件无需重新生成即可支持新签名方式
问题解决
方案一:
在本地生成一个新的 ed25519 key
ssh-keygen -t ed25519 -C "your_email@example.com"
方案二:
升级下新的工具,新的工具已经支持了这种加密方式
方案三:
在服务器端临时放开这种加密方式(兼容旧客户端)
编辑 /etc/ssh/sshd_config,添加一行:
PubkeyAcceptedAlgorithms +ssh-rsa
有的版本需要写:
PubkeyAcceptedKeyTypes +ssh-rsa
然后重启 sshd:
systemctl restart sshd
这样老的 ssh-rsa key 就能继续用。