You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fedora Server 38 SSH密钥认证失败:ssh-add加载ECDSA密钥报错

SSH密钥认证排查思路(Fedora Server 38)
  • 检查私钥及目录权限
    私钥文件权限必须严格为600,.ssh目录权限为700,否则SSH会拒绝加载密钥。执行以下命令验证:

    ls -l ~/.ssh/id_ecdsa ~/.ssh
    

    确保文件所有者为当前登录用户,无其他用户读写权限。

  • 验证私钥完整性与匹配性

    1. 从私钥导出公钥并与远程主机的authorized_keys对比:
      ssh-keygen -y -f ~/.ssh/id_ecdsa
      
      将输出内容与远程主机~/.ssh/authorized_keys中的对应条目完全比对,确保无换行、空格或字符缺失。
    2. 检查私钥文件是否损坏:
      ssh-keygen -l -f ~/.ssh/id_ecdsa
      
      若命令报错,说明私钥文件已损坏,需重新生成。
  • 排查libcrypto兼容性问题

    1. 尝试用PEM格式重新生成密钥(适配OpenSSL 3.x可能的格式兼容问题):
      ssh-keygen -t ecdsa -b 384 -m PEM
      
      重新用ssh-copy-id推送公钥后测试。
    2. 确认OpenSSL与OpenSSH版本匹配:
      openssl version
      ssh -V
      
      避免手动更新过OpenSSL导致与系统默认OpenSSH不兼容。
  • 排查PAM模块干扰
    虽然已开启公钥认证,但UsePAM yes可能触发PAM模块拦截:

    1. 临时修改/etc/ssh/sshd_config,将UsePAM改为no,重启sshd:
      systemctl restart sshd
      
      测试登录,若成功则说明PAM配置存在限制。
    2. 检查PAM的SSH配置文件:
      cat /etc/pam.d/sshd
      
      重点排查是否存在pam_securetty.so(限制root非终端登录)、pam_access.so(用户访问控制)等模块的规则。
  • 验证sshd_config关键参数
    确保以下配置正确:

    • PubkeyAuthentication yes
    • AuthorizedKeysFile未被修改为非默认路径(默认是~/.ssh/authorized_keys)
    • 若使用root登录,PermitRootLogin需设置为prohibit-password或yes
    • 无AllowUsers/DenyUsers规则限制当前用户登录
  • 跳过ssh-agent直接测试登录
    绕开agent直接用私钥登录,定位问题是否在agent:

    ssh -v -i ~/.ssh/id_ecdsa user@remote-host
    

    查看详细输出中的错误节点,若登录成功则需排查ssh-agent的配置或运行状态。

  • 修复SELinux上下文
    Fedora默认开启SELinux,.ssh目录及文件的SELinux上下文异常会导致认证失败:

    1. 检查上下文:
      ls -Z ~/.ssh/authorized_keys
      
      正常应为system_u:object_r:ssh_home_t:s0
    2. 修复上下文:
      restorecon -Rv ~/.ssh
      

内容的提问来源于stack exchange,提问作者el_maximo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:57:36