在CentOS系统中,公钥管理是保障服务器安全的重要环节,定期清理不必要的公钥能有效降低潜在的安全风险,本文将详细介绍CentOS系统中删除公钥的多种方法、注意事项及相关操作细节。

理解公钥的作用与存储位置
公钥通常用于SSH免密登录,存储在用户目录的.ssh文件夹中,主要包括两个文件:authorized_keys(存储已授权的公钥)和known_hosts(记录已连接的主机公钥),删除公钥主要操作authorized_keys文件,同时可根据需求清理known_hosts。
删除公钥的常用方法
手动编辑文件删除
适用于少量公钥管理,操作简单直接。
操作步骤:
- 使用
vim或nano编辑器打开目标用户的authorized_keys文件,vim /home/username/.ssh/authorized_keys
- 找到需要删除的公钥行(通常以
ssh-rsa、ssh-ed25519等开头),直接删除该行或使用d命令(vim中)。 - 保存文件(
wq退出),并设置正确权限:chmod 600 /home/username/.ssh/authorized_keys chown username:username /home/username/.ssh/authorized_keys
使用命令行工具批量删除
适用于需要根据特定规则(如密钥类型、注释信息)删除大量公钥的场景。
示例:删除所有以old_key开头的公钥:
sed -i '/^old_key/d' /home/username/.ssh/authorized_keys
说明:

sed -i表示直接修改文件;/^old_key/d表示匹配以old_key开头的行并删除。
通过SSH密钥指纹定位删除
若仅记得公钥的指纹,可通过以下步骤定位并删除:
- 生成公钥指纹列表:
ssh-keygen -lf /home/username/.ssh/authorized_keys
- 根据指纹对应的公钥行,结合
sed或vim删除。
特殊情况处理
删除特定用户的公钥
若需删除系统级或非当前用户的公钥,需指定完整路径,
vim /root/.ssh/authorized_keys
清理known_hosts文件
当主机公钥变更或需要移除信任记录时,可编辑~/.ssh/known_hosts文件,或使用以下命令删除指定主机记录:
ssh-keygen -R hostname
操作注意事项
- 备份重要文件:删除前建议备份
authorized_keys文件,避免误操作导致无法登录:cp /home/username/.ssh/authorized_keys /home/username/.ssh/authorized_keys.bak
- 权限控制:确保
.ssh目录权限为700,文件权限为600,防止其他用户篡改。 - 测试验证:删除后通过SSH测试是否仍能使用对应密钥登录,确保操作无误。
常见错误与解决方法
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 删除后仍可登录 | 公钥存在于其他文件(如authorized_keys2) | 检查.ssh目录下所有相关文件 |
| 权限错误导致登录失败 | 文件权限未正确设置 | 执行chmod 600 authorized_keys |
相关问答FAQs
Q1:删除公钥后如何验证是否生效?
A1:删除公钥后,尝试使用对应的私钥通过SSH登录服务器,如果登录失败并提示“Permission denied”或“publickey,password”,则说明公钥已成功移除,可检查authorized_keys文件中是否仍存在该公钥记录。

Q2:是否可以批量删除多个公钥?
A2:可以,结合grep和sed命令可实现批量删除,删除所有包含user@old-host注释的公钥:
sed -i '/user@old-host/d' /home/username/.ssh/authorized_keys
或通过正则表达式匹配特定密钥类型删除,如删除所有RSA密钥:
sed -i '/ssh-rsa/d' /home/username/.ssh/authorized_keys
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复