EL9系统SSH Post-KEX阶段用户密钥验证失败(mm_answer_keyverify报错)的技术问询及流程咨询
EL9系统SSH Post-KEX阶段用户密钥验证失败(mm_answer_keyverify报错)的技术问询及流程咨询
各位大佬好,我现在碰到一个棘手的SSH密钥验证问题,想请教下Post-KEX阶段用户密钥验证的具体交互逻辑,尤其是mm_answer_keyverify环节的细节,同时也希望结合我的场景定位问题根源。
核心诉求
我需要一个通俗易懂但有技术深度的解释(类似ELI5但别太小白,也别直接甩看不懂的代码),搞清楚OpenSSH在Post-KEX阶段用户密钥验证的双方动作:
- 两端具体做了哪些操作?谁发起请求、谁执行验证?
- 是否是双方对密钥签名后比对签名?
- 是不是用本地签名算法加密内容后再做一致性校验?
- 重点想明白
mm_answer_keyverify环节,在authorized_keys检查通过后,到底是怎么验证用户密钥的?
我的场景与问题现象
我们正在把旧的EL7系统替换成EL9系统,全程用的是相同的RSA密钥、相同用户、NFS挂载的同一份home目录文件,但从其他服务器连接EL9时出现了诡异的问题:
- EL7上一切正常,但EL9上:Workday连接失败,AIX系统用
curl+sftp连接失败,但AIX直接用sftp连接却完全正常。 - 日志显示主机密钥、KEX、
authorized_keys检查都通过了,问题卡在用户密钥验证阶段:
失败日志片段:debug1: /home/USER/.ssh/authorized_keys:12: matching key found: RSA SHA256:aGrK... Accepted key RSA SHA256:aGrK... found at /home/USER/.ssh/authorized_keys:12 debug3: mm_answer_keyallowed: publickey authentication: RSA key is allowed debug3: mm_answer_keyverify: publickey RSA signature unverified: error in libcrypto - 我们临时启用了LEGACY加密策略,但问题依旧。我个人猜测是两端算法兼容性问题:一端还在用
ssh-rsa算法,另一端用的是兼容模式(比如请求ssh-rsa但实际用rsa-sha256-512),但这只是我的猜测,对底层细节不太熟。
关键日志对比
同EL9服务器上,成功连接的日志:
debug3: userauth_pubkey: have rsa-sha2-512 signature for RSA SHA256:aGrK.....
失败连接的日志:
debug3: userauth_pubkey: have ssh-rsa signature for RSA SHA256:aGrK.....
最明显的区别就是签名算法,但我搞不懂为什么会出现这种差异,难道是客户端指定了服务器要用的算法?
希望各位大佬能给我一些思路或者细节解释,谢谢!
备注:内容来源于stack exchange,提问作者zenfridge
相关产品推荐
相关产品推荐

