在CentOS 7系统中,修改SSH密钥是提升服务器安全性的重要操作,密钥认证相比密码认证具有更高的安全性和便捷性,可以有效防止暴力破解攻击,本文将详细介绍在CentOS 7系统中生成、更换和管理SSH密钥的完整流程,帮助用户建立更安全的远程连接环境。

准备工作
在开始操作前,需要确保以root用户或具有sudo权限的用户身份登录系统,建议备份当前的SSH配置文件,以防操作失误导致无法远程连接,备份命令可通过cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak完成,确认系统已安装OpenSSH服务,大多数CentOS 7默认已安装,可通过rpm -qa | grep openssh检查。
生成新的SSH密钥对
密钥对的生成是整个过程的基础,建议使用RSA算法,密钥长度选择2048位或更高,在终端中执行ssh-keygen -t rsa -b 4096命令,系统会提示设置密钥保存路径和密码短语,默认路径为~/.ssh/id_rsa,直接按回车键即可接受默认设置,设置密码短语可以为密钥提供额外的安全保护,即使密钥文件泄露,没有密码短语也无法使用。
生成的密钥对包含私钥(id_rsa)和公钥(id_rsa.pub),私钥必须严格保密,建议设置600权限确保只有所有者可读写,命令为chmod 600 ~/.ssh/id_rsa,公钥则需要上传到服务器,用于验证客户端身份。
上传公钥到服务器
上传公钥有三种常用方法:通过ssh-copy-id命令、手动复制或使用配置文件管理,最简单的方式是执行ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip,其中user为服务器用户名,server_ip为目标服务器IP地址,该命令会自动将公钥追加到远程服务器的~/.ssh/authorized_keys文件中。
如果无法使用ssh-copy-id,可通过cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"命令手动上传,完成后,在服务器端确保~/.ssh目录权限为700,authorized_keys文件权限为600,可通过chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys设置。

配置SSH服务启用密钥认证
登录服务器后,编辑SSH配置文件/etc/ssh/sshd_config,使用vim或nano工具进行修改,找到以下关键配置项并确保其值正确:PasswordAuthentication no禁用密码登录,PubkeyAuthentication yes启用密钥认证,AuthorizedKeysFile .ssh/authorized_keys指定公钥存储路径,若需限制可登录用户,可添加AllowUsers username配置。
修改完成后保存文件,并重启SSH服务使配置生效:systemctl restart sshd,建议在重启前先测试新密钥是否可用,避免因配置错误导致锁住服务器。
管理多组密钥
对于需要管理多组密钥的场景,可通过配置文件实现不同密钥对应不同用户或服务器,在~/.ssh/config文件中添加如下内容:
Host server1
HostName 192.168.1.100
User admin
IdentityFile ~/.ssh/id_rsa_server1
Host server2
HostName 192.168.1.101
User deploy
IdentityFile ~/.ssh/id_rsa_server2
这样,执行ssh server1时会自动使用对应的私钥文件,可通过ssh-add命令将私钥添加到SSH代理中,实现一次验证后多次使用,避免重复输入密码短语。
安全增强建议
为进一步提升安全性,建议定期更换密钥并删除不再使用的公钥,可通过编辑~/.ssh/authorized_keys文件删除不需要的公钥行,启用日志审计功能,监控SSH登录行为:在/etc/ssh/sshd_config中设置LogLevel VERBOSE,并通过journalctl -u sshd查看日志。

常见问题解决
如果在操作过程中遇到"Permission denied (publickey)"错误,首先检查文件权限是否正确,然后确认公钥是否正确添加到authorized_keys中,若无法远程连接,可通过控制台登录服务器检查/var/log/secure日志定位问题,或使用救援模式恢复SSH配置。
FAQs
Q1: 忘记SSH私钥密码短语怎么办?
A1: 私钥密码短语无法恢复,建议生成新的密钥对,并将公钥重新上传到服务器,为避免遗忘,可将密码短语记录在安全的密码管理器中。
Q2: 如何在Windows系统下生成SSH密钥并上传到CentOS 7?
A2: 使用PuTTYgen工具生成密钥对,保存为.ppk格式,通过PuTTY的Pageant加载私钥,或使用WinSCP将公钥文件(.pub)上传到服务器,并按前文所述添加到authorized_keys中。