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

删除id_rsa及id_rsa.pub后仍可连接SSH服务器的配置咨询

问题根因

你遇到的现象是OpenSSH客户端的默认认证逻辑导致的:未做特殊配置时,客户端除了尝试~/.ssh/路径下的各类默认密钥文件(id_rsa、id_ecdsa、id_ed25519等),还会主动读取ssh-agent中缓存的所有私钥完成认证,日志里显示的user_name@user_notebook就是缓存在agent内存中的私钥,和你删除的本地id_rsa文件无关,所以哪怕删了本地密钥文件依然能正常连接。

配置方法(强制仅使用~/.ssh/id_rsa作为唯一RSA认证密钥)

按以下步骤操作即可:

  • 第一步:清空ssh-agent中已缓存的私钥
    先执行命令查看当前agent内存储的密钥列表,确认异常密钥条目:
    ssh-add -l
    执行命令清空agent内所有缓存密钥:
    ssh-add -D
    如果不想清空全部缓存,也可以通过ssh-add -d 密钥文件路径单独删除user_name@user_notebook对应的私钥条目。
  • 第二步:修改用户级SSH客户端配置
    编辑当前用户的SSH配置文件~/.ssh/config(文件不存在则直接新建),添加如下配置:
    # 全局生效配置,若要仅对指定服务器生效,将*替换为对应服务器IP/别名
    Host *
      # 强制仅使用配置中明确指定的密钥做认证,禁止自动尝试其他密钥
      IdentitiesOnly yes
      # 指定唯一的RSA密钥路径
      IdentityFile ~/.ssh/id_rsa
      # 完全禁用ssh-agent交互,彻底避免缓存密钥被调用(不需要agent功能时建议开启)
      IdentityAgent none
    
  • 第三步:验证配置生效
    连接目标服务器时增加verbose参数查看认证日志:
    ssh -v 目标服务器地址
    日志中只会出现尝试加载~/.ssh/id_rsa的记录,不会再出现调用user_name@user_notebook密钥的条目;此时删除~/.ssh/id_rsa文件再连接会直接提示权限拒绝,符合预期。

注意:如果配置后仍有异常,检查系统级SSH配置文件/etc/ssh/ssh_config中是否存在额外的IdentityFile、IdentityAgent相关配置,用户级~/.ssh/config的配置优先级高于系统级配置,正常会直接覆盖系统级规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:15:30