【Github | Git】如何彻底删除 SSH 密钥&公钥:删除本地密钥公钥 && 删除GitHub密钥公钥

发布于:2025-09-13 ⋅ 阅读:(23) ⋅ 点赞:(0)

- 第 124 篇 -
Date: 2025 - 09 - 08
Author: 郑龙浩(仟墨)

如何彻底删除 SSH 密钥:从本地到 GitHub 的完整清理指南

如何彻底删除 SSH 密钥:从本地到 GitHub 的完整清理指南

需要废弃一对 SSH 密钥时,简单的文件删除并不够彻底。密钥可能残留在代理缓存或远程平台中,留下安全隐患。

如何删除呢,下面是操作步骤

第一步:进入 SSH 目录并查看文件

首先进入 SSH 密钥目录并查看所有文件:

cd ~/.ssh
ls -la

常见的密钥文件对通常成对出现:

默认文件(私钥、公钥)如下:

  • id_rsa(私钥)
  • id_rsa.pub(公钥)

我后来创建的私钥、公钥如下:

  • new_IDrsa
  • new_IDrsa.pub

第二步:在目录内删除密钥文件

确认要删除的密钥文件后,直接在 .ssh 目录内删除它们:

# 删除默认的 RSA 密钥对
rm -f id_rsa id_rsa.pub

# 如果使用其他其他「加密算法」或「自定义名称」的密钥:如 new_IDrsa(私钥) 与 new_IDrsa.pub(公钥)
rm -f id_ed25519 id_ed25519.pub # 加密算法的密钥和公钥
rm -f new_IDrsa new_IDrsa.pub # 自定义的密钥和公钥

注意-f 参数会强制删除,无需确认。慎用!


第三步:清理 SSH 代理中的密钥缓存

即使删除了文件,密钥可能仍驻留在 SSH 代理的内存中。需要手动清除:

# 启动 SSH 代理(如果未运行)
eval "$(ssh-agent -s)"

# 列出所有缓存的密钥
ssh-add -l

# 删除所有缓存的密钥
ssh-add -D

# 确认清理结果 第二次输入该指令
ssh-add -l  # 此时应显示 "The agent has no identities."

这一步确保了密钥从内存中被彻底清除。

当然如果第一次执行了ssh-add -l指令后没有输出所有缓存密钥的话,而是直接输出了The agent has no identities.则表示:

代理没有缓存任何密钥


第四步:移除 GitHub 上的公钥记录(关键步骤)

本地删除后,必须同步移除远程平台的公钥记录:

  1. 登录 GitHub,点击右上角头像进入 Settings
  2. 在左侧边栏选择 SSH and GPG keys
  3. 找到与本地删除密钥对应的公钥记录
  4. 点击右侧的 Delete 按钮完成移除

重要:如果密钥曾用于多个平台(如 GitLab、服务器等),请务必同步删除所有相关记录。


第五步:清理相关配置文件

.ssh 目录内编辑配置文件:

nano config

在打开的配置文件中,查找并删除或注释掉(行首加 #)类似这样的配置行:

# 注释或删除这行
# IdentityFile ~/.ssh/id_rsa

保存退出后,你的配置清理就完成了。


验证清理结果

完成所有步骤后,通过以下命令验证清理是否彻底:

# 检查文件是否消失
ls id_rsa*  # 应显示 "No such file or directory"

# 测试 GitHub 连接
ssh -T git@github.com  # 应提示 "Permission denied (publickey)"

如果看到权限拒绝的提示,说明清理工作已成功完成。


总结:正确的删除顺序
  1. 进入目录cd ~/.ssh
  2. 远程优先:首先在 GitHub 等平台删除公钥
  3. 本地清理:删除本地密钥文件
  4. 内存清理:清除 SSH 代理中的密钥缓存
  5. 配置整理:更新 SSH 配置文件

遵循这个顺序可以最大程度避免密钥在删除过程中被不当使用。记住,密钥管理是开发者的基本安全素养,定期审查和更新密钥是良好的安全习惯。