服务器创建密钥对是保障远程登录安全的核心手段,其本质是利用非对称加密算法生成一对相互关联的密钥,其中公钥存放在服务器端,私钥由用户本地保管,以此实现“无密码登录”且极大提升防暴力破解能力。相比传统的密码认证,密钥对认证不仅更安全,还能有效规避弱口令风险,是服务器运维管理的标准操作规范。

核心原理与安全优势
在深入操作步骤之前,理解密钥对的运作机制至关重要,密钥对由公钥和私钥组成,二者一一对应。
- 私钥:相当于家门钥匙,必须严格保密,绝不在网络中传输。
- 公钥:相当于家门锁芯,放置在服务器指定位置,可以公开。
当客户端发起连接请求时,服务器会利用公钥加密一段随机字符串发送给客户端,客户端使用私钥解密后发回服务器,服务器验证解密正确性即可确认身份。 这一过程无需传输密码,即使网络被监听,私钥也不会泄露。
创建前的环境准备
在执行服务器怎么创建秘钥对的具体操作前,需确保环境配置正确,这是保障后续流程顺畅的基础。
- 客户端工具:Linux或MacOS系统可直接使用终端;Windows系统建议使用PowerShell或安装Git Bash,也可以使用PuTTY、Xshell等SSH客户端工具。
- 服务端权限:必须拥有服务器的root权限或具备sudo权限的普通用户账号。
- 网络连通性:确保客户端与服务器之间的22端口(SSH默认端口)网络通畅。
服务器端创建密钥对详细步骤
这是最常用且最推荐的方法,直接在服务器端生成私钥与公钥,然后将私钥下载至本地。这种方式确保了私钥在生成初期未经过不安全的网络传输。
登录服务器终端
使用SSH工具登录到目标服务器,输入密码完成登录。
执行生成命令
输入以下命令启动密钥生成程序:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa:指定使用RSA算法,兼容性最好。-b 4096:指定密钥长度为4096位,安全性更高。-C:添加注释,通常用于标识密钥用途或所有者。
配置密钥存储路径
系统会提示输入保存路径,默认为~/.ssh/id_rsa。
- 建议操作:直接按回车键使用默认路径,避免后续配置出错。
- 自定义路径:若需管理多组密钥,可输入自定义路径,如
~/.ssh/my_server_key。
设置密钥口令
系统会提示输入口令。

- 高安全场景:输入复杂的口令,即使私钥被盗,攻击者仍需破解口令才能使用。
- 自动化运维场景:若用于脚本自动化登录,可留空直接按两次回车,实现免交互登录,但需确保服务器硬盘安全。
查看生成结果
进入.ssh目录查看文件:ls -l ~/.ssh/
你会看到两个文件:
id_rsa:私钥文件,权限应为600。id_rsa.pub:公钥文件,权限应为644。
配置公钥与SSH服务
生成密钥对后,必须将公钥“安装”到授权列表中,并调整SSH配置以启用密钥认证。
部署公钥至授权文件
执行以下命令,将公钥内容追加到authorized_keys文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
这一步是核心环节,authorized_keys文件是SSH服务验证客户端身份的依据。
设置文件权限
权限设置错误是导致密钥登录失败的常见原因,必须严格执行以下命令:chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
SSH服务对权限极其敏感,若权限过于开放(如777),服务会拒绝读取密钥文件。
修改SSH服务配置
编辑SSH配置文件/etc/ssh/sshd_config,确保以下参数设置正确:
PubkeyAuthentication yes:启用公钥认证。PasswordAuthentication no:建议关闭密码认证,强制使用密钥登录(需确认密钥登录成功后再修改此项,防止被锁在外面)。AuthorizedKeysFile .ssh/authorized_keys:指定授权文件路径。
修改完成后,重启SSH服务使配置生效:systemctl restart sshd 或 service sshd restart
客户端私钥管理与登录验证
服务器端配置完成后,需将生成的私钥文件(id_rsa)安全地下载到本地客户端。
私钥的安全传输
使用SFTP工具(如FileZilla、WinSCP)将服务器上的id_rsa文件下载至本地。下载完成后,务必删除服务器端的私钥文件,仅保留公钥,遵循“私钥不出服务器”的二次防护原则,除非你需要在多客户端登录。

本地登录验证
- Linux/Mac终端:执行
ssh -i /本地路径/id_rsa user@server_ip,若设置了口令,需输入口令。 - Windows PuTTY:需使用PuTTYgen工具将下载的
id_rsa转换为.ppk格式,再加载到PuTTY的Auth配置中进行连接。
验证成功标志
成功登录后,终端提示符会变更为服务器用户界面,若配置了禁用密码登录,尝试用密码登录应显示“Permission denied”。
独立见解与专业建议
在实际的运维工作中,关于服务器怎么创建秘钥对以及后续管理,存在许多容易被忽视的细节,以下是基于E-E-A-T原则的专业建议:
- 算法选择策略:虽然RSA-4096目前仍是主流,但在高性能或极高安全需求场景下,建议使用ED25519算法,它具有更短的密钥长度、更快的签名速度,且安全性不输给长位RSA,生成命令为:
ssh-keygen -t ed25519。 - 私钥生命周期管理:密钥对不应“一劳永逸”,建议每半年或一年轮换一次密钥对,对于离职员工的密钥,必须立即从
authorized_keys中删除对应公钥。 - 避免使用空口令私钥:在CI/CD流水线中,为了方便常使用无口令私钥,这实际上是一个巨大的安全隐患,建议使用
ssh-agent来管理有口令的私钥,既保证安全又实现自动化。
相关问答
创建密钥对后,SSH登录提示“Permission denied (publickey)”怎么办?
这是最常见的报错,通常由以下三个原因导致:
- 权限问题:检查服务器端
.ssh目录是否为700,authorized_keys文件是否为600。 - SELinux拦截:在CentOS等系统中,恢复文件安全上下文可解决,执行命令
restorecon -R -v ~/.ssh。 - 错误:检查
authorized_keys是否完整,确保没有多余的换行符或缺失字符。
是否可以在本地电脑生成密钥对,再上传公钥到服务器?
完全可以,且这也是一种常用方法。
操作流程为:在本地执行ssh-keygen生成密钥对,然后使用ssh-copy-id user@server_ip命令将本地公钥自动上传至服务器的authorized_keys文件中,这种方法省去了手动下载私钥的步骤,适合从单一控制机管理多台服务器的场景。
如果您在配置过程中遇到其他疑难杂症,欢迎在评论区留言交流。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/99541.html