在Linux服务器管理中,安全性始终是核心关注点,CentOS作为广泛使用的服务器操作系统,提供了多种安全机制,其中密钥对认证是一种比传统密码认证更安全、更高效的登录方式,本文将详细介绍CentOS系统中密钥对的生成、管理、配置及相关安全实践,帮助用户构建更安全的服务器访问环境。

密钥对的基本概念
密钥对认证基于非对称加密技术,由一对密钥组成:私钥和公钥,私钥存储在客户端,必须严格保密;公钥则上传到服务器,用于验证客户端的身份,当用户尝试登录时,服务器会使用公钥加密一段随机数,客户端需用私钥解密后返回,验证通过后方可登录,这种方式有效避免了密码暴力破解的风险,同时提升了登录效率。
生成密钥对
在CentOS系统中,通常使用OpenSSL工具包中的ssh-keygen命令生成密钥对,打开终端,执行以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t参数指定加密算法类型(RSA推荐使用2048位或4096位),-b参数定义密钥长度,-C参数添加注释(通常为邮箱地址),执行后,系统会提示输入保存私钥的文件路径(默认为~/.ssh/id_rsa)和密码短语(可选,用于加密私钥文件),建议设置密码短语,即使私钥泄露也能提供额外保护。
管理私钥文件
私钥是身份认证的核心,需妥善保管,生成后,私钥文件默认权限为600,仅所有者可读写,可通过以下命令调整权限:

chmod 600 ~/.ssh/id_rsa
若设置了密码短语,每次使用私钥时需输入密码,可通过ssh-agent工具实现密钥缓存,避免重复输入,启动ssh-agent并添加私钥:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
配置服务器端公钥上传到服务器的~/.ssh/authorized_keys文件中是实现密钥认证的关键步骤,可通过以下方式操作:
- 手动复制:使用
cat ~/.ssh/id_rsa.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"命令直接推送公钥。 - SSH-copy-id工具:执行
ssh-copy-id user@server,该工具会自动处理公钥上传和权限设置。
上传后,确保authorized_keys文件权限为600,所属目录~/.ssh权限为700,否则SSH服务可能拒绝加载。
禁用密码认证提升安全性
为强制使用密钥对认证,需修改SSH服务配置文件/etc/ssh/sshd_config,找到以下行并修改:
PasswordAuthentication no PubkeyAuthentication yes
保存后重启SSH服务:systemctl restart sshd,仅持有私钥的用户才能登录服务器,有效阻止了密码破解攻击。
密钥对的备份与迁移
密钥对的可移植性是其优势之一,私钥文件可直接复制到新设备,或通过加密备份(如使用GPG加密)后存储在云存储或移动硬盘中,若需更换密钥,需在服务器上更新authorized_keys文件,并删除旧公钥对应的私钥,建议定期轮换密钥,特别是当私钥可能泄露时。

常见问题排查
配置密钥认证时,可能会遇到登录失败的情况,常见原因包括:
- 权限错误:检查
~/.ssh目录和authorized_keys文件权限是否正确。 - SELinux拦截:执行
restorecon -Rv ~/.ssh恢复默认安全上下文。 - 公钥格式错误:确保
authorized_keys文件中每行仅包含一个公钥,且无多余字符。
相关问答FAQs
Q1:如果忘记私钥的密码短语,是否可以恢复?
A1:私钥的密码短语由用户自行设置,OpenSSH未提供恢复机制,建议提前将密码短语记录在安全的位置,或通过ssh-keygen的-p选项修改密码短语,若忘记密码短语,只能重新生成密钥对并更新服务器上的公钥。
Q2:如何在一台服务器上管理多个用户的公钥?
A2:可通过为每个用户创建独立的系统账户,并将各自的公钥添加到对应家目录的authorized_keys文件中,若需共享访问权限,可在单个账户的authorized_keys文件中添加多个公钥,每行一个,并可通过from或command选项限制使用范围或执行命令。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复