在CentOS系统中生成SSH密钥对是提升服务器安全性和管理效率的重要操作,SSH(Secure Shell)密钥对通过非对称加密技术实现安全的远程登录,相比传统密码认证,具有更高的安全性和便捷性,本文将详细介绍在CentOS系统中生成SSH密钥对的完整流程,包括密钥类型选择、生成步骤、权限配置以及常见问题的解决方案。

SSH密钥类型
在生成SSH密钥之前,需要了解常见的密钥类型及其特点,CentOS系统支持的SSH密钥类型主要包括RSA、DSA、ECDSA和Ed25519,RSA是最广泛使用的类型,兼容性最佳;DSA因安全性问题已逐渐被淘汰;ECDSA性能较高,适合现代加密需求;Ed25519是最新类型,兼具安全性和高效性,但某些旧系统可能不支持,默认情况下,OpenSSH客户端优先使用RSA(2048位)密钥。
生成SSH密钥对的步骤
检查是否已存在密钥
在生成新密钥前,建议先检查系统中是否已存在SSH密钥,打开终端,执行以下命令:
ls -al ~/.ssh
如果看到id_rsa、id_ecdsa或id_ed25519等文件,说明系统中已存在密钥,可根据需要决定是否备份或覆盖。
使用ssh-keygen生成密钥
执行ssh-keygen命令开始生成密钥对,推荐使用RSA类型并指定密钥长度为4096位以增强安全性:
ssh-keygen -t rsa -b 4096
执行过程中会提示以下信息:
- 密钥存储路径:默认为
~/.ssh/id_rsa,可直接按回车键使用默认路径,或输入自定义路径。 - 密码短语(Passphrase):建议设置强密码短语,即使密钥文件泄露也能提供额外保护,若无需密码短语,可直接按回车键跳过。
- 确认密码短语:再次输入密码短语以确认。
生成成功后,~/.ssh目录下会创建两个文件:id_rsa(私钥)和id_rsa.pub(公钥)。
其他密钥类型的生成示例
- 生成ECDSA密钥:
ssh-keygen -t ecdsa -b 521
- 生成Ed25519密钥:
ssh-keygen -t ed25519
密钥权限配置
SSH服务对密钥文件权限有严格要求,权限不当可能导致密钥认证失败,需确保以下权限设置:

chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub
700权限:确保只有用户本人可访问.ssh目录。600权限:私钥文件仅用户可读写,防止其他用户读取。644权限:公钥文件可被其他用户读取,但不可修改。
将公钥复制到远程服务器
方法一:使用ssh-copy-id命令(推荐)
ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote_host
该命令会自动将公钥追加到远程服务器的~/.ssh/authorized_keys文件中,并设置正确权限。
方法二:手动复制公钥
若远程服务器未安装ssh-copy-id,可通过以下步骤手动操作:
- 查看公钥内容:
cat ~/.ssh/id_rsa.pub
- 复制输出的公钥内容。
- 登录远程服务器,编辑
~/.ssh/authorized_keys文件,将公钥追加到文件末尾。 - 确保远程服务器
.ssh目录和authorized_keys文件权限正确:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
SSH密钥的高级管理
指定密钥文件连接
若系统中存在多个密钥对,可通过-i参数指定私钥文件:
ssh -i ~/.ssh/custom_key username@remote_host
配置SSH客户端
编辑~/.ssh/config文件,为不同主机配置密钥:
Host server1
HostName 192.168.1.100
User admin
IdentityFile ~/.ssh/server1_key
Host server2
HostName 192.168.1.101
User root
IdentityFile ~/.ssh/server2_key 配置后,可直接通过ssh server1等别名连接。
密钥的安全存储
为防止私钥泄露,建议:
- 使用密码短语保护私钥。
- 定期更换密钥对。
- 避免在公共场所或不安全设备上使用私钥。
常见问题排查
密钥认证失败
可能原因及解决方案:

- 权限错误:检查
.ssh目录和authorized_keys文件权限是否正确。 - 公钥格式问题:确保
authorized_keys文件中每行仅包含一个公钥,且无多余空格或换行符。 - SSH服务配置:检查远程服务器
/etc/ssh/sshd_config中是否启用PubkeyAuthentication yes。
忘记密码短语
若私钥设置了密码短语但忘记,无法解密私钥,此时需重新生成密钥对,并确保密码短语可被记住或妥善保存。
相关问答FAQs
问题1:如何更改SSH密钥的密码短语?
解答:使用ssh-keygen命令的-p选项可以修改现有私钥的密码短语,执行以下命令:
ssh-keygen -p -f ~/.ssh/id_rsa
根据提示输入旧密码短语并设置新密码短语即可。
问题2:如何删除已添加的SSH公钥?
解答:登录远程服务器,编辑~/.ssh/authorized_keys文件,删除对应的公钥行,保存文件后,该密钥将无法再用于认证,若需完全禁用密钥认证,可在远程服务器/etc/ssh/sshd_config中设置PubkeyAuthentication no并重启SSH服务。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复