AWS EC2搭建Git服务时SSH登录密钥使用规则异常咨询
问题根本原因
SSH公钥认证的核心逻辑是客户端持有私钥、服务端持有公钥,不存在客户端使用公钥完成登录的情况,你观察到的“用公钥登录成功”是SSH客户端自动匹配到同路径私钥的假象。
具体差异原因
- 本地SSH代理缓存差异
可以正常“用公钥登录”的用户,对应私钥已经被添加到本地ssh-agent缓存中,你执行ssh -i id_rsa.pub时,SSH会自动从代理中读取对应私钥完成认证。其余3个用户的私钥未加入代理缓存,无法自动获取,必须显式指定私钥路径。
你可以执行ssh-add -l查看本地已缓存的密钥列表验证该情况。 - 本地SSH配置差异
检查该正常用户本地~/.ssh/config文件,是否配置了对应EC2公网IP的IdentityFile参数,默认指向了对应私钥文件,无需显式指定即可自动加载,其余3个用户无对应配置。 - 密钥存放路径/命名差异
如果该正常用户的私钥存放在~/.ssh/id_rsa默认路径下,SSH客户端默认会自动加载该路径的标准命名私钥,指定同路径公钥时会自动匹配到私钥完成认证。其余3个用户的私钥未放在默认路径,或命名不符合SSH自动读取的规则,无法自动匹配。
验证方法
将该正常用户的本地私钥临时重命名,再执行ssh -i id_rsa.pub username@public.ip,会直接返回认证失败,即可验证上述结论。
内容的提问来源于stack exchange,提问作者yellowbuck
相关产品推荐
相关产品推荐

