在CentOS系统中,公钥生成是SSH安全连接的基础操作,通过非对称加密技术实现身份验证和数据传输安全,以下将详细介绍CentOS公钥生成的完整流程,包括准备工作、操作步骤及常见问题处理。

准备工作
在生成公钥之前,需确保系统已安装OpenSSH工具,可通过ssh -V命令检查当前SSH版本,若未安装,使用yum install openssh-clients进行安装,建议以普通用户身份操作,避免直接使用root账户,以提升系统安全性,确认本地计算机与目标服务器网络连通,确保后续密钥传输无障碍。
生成SSH密钥对
SSH密钥对由公钥和私钥组成,私钥需妥善保管在本地,公钥则需上传至目标服务器,生成密钥对的命令为ssh-keygen,默认使用RSA算法,执行命令后,系统会提示输入密钥存储路径和密码短语(可选)。
ssh-keygen -t rsa -b 4096
-t指定算法类型,-b指定密钥长度,4096位密钥安全性较高,若直接按回车,密钥将默认存储在~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)路径,设置密码短语可为私钥增加额外保护,即使密钥泄露,未授权用户也无法使用。
管理密钥文件
生成密钥后,需确保.ssh目录权限正确,执行以下命令设置目录权限为700,私钥文件权限为600:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa
这一步至关重要,因SSH客户端会拒绝权限不规范的密钥文件,若需修改密钥密码短语,可通过ssh-keygen -p命令重新设置,或使用ssh-keygen -f ~/.ssh/id_rsa -p指定密钥文件路径。

上传公钥至目标服务器
公钥需传输至目标服务器的~/.ssh/authorized_keys文件中,推荐使用ssh-copy-id命令,自动完成公钥上传并设置权限:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@target_server
执行后输入目标服务器密码,公钥将追加至authorized_keys文件,若服务器未安装该命令,可手动上传公钥内容并追加至文件:
ssh username@target_server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub
完成后,确保authorized_keys文件权限为600,所属用户为当前操作用户。
验证SSH免密登录
上传公钥后,通过ssh username@target_server命令测试免密登录,若成功,说明公钥配置正确;若仍需密码,检查authorized_keys文件权限或服务器SSH配置(如/etc/ssh/sshd_config中的PubkeyAuthentication是否为yes)。
常见问题处理
- 权限错误导致登录失败:检查
.ssh目录及authorized_keys文件权限,确保未设置为777等宽松权限。 - 密钥格式不兼容:若目标服务器使用旧版SSH,可尝试生成DSA密钥(
ssh-keygen -t dsa),但需注意DSA密钥长度较短,安全性较低。
相关问答FAQs
Q1: 忘记密钥密码短语怎么办?
A1: 若忘记私钥密码短语,无法恢复,需重新生成密钥对,并将新公钥上传至服务器,旧密钥可保留用于其他场景,但建议删除以避免混淆。

Q2: 如何在同一台服务器上管理多个密钥?
A2: 可通过ssh-keygen生成多个密钥(如id_rsa_work、id_rsa_personal),并在~/.ssh/config文件中配置不同Host对应的IdentityFile,
Host work_server
HostName 192.168.1.100
User work_user
IdentityFile ~/.ssh/id_rsa_work 这样,连接时自动使用对应密钥,无需手动指定。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复