服务器密钥是做什么的?一句话:它是服务器用来证明“你是你”、加密传输或授权调用接口的凭证。 SSH登录密钥、HTTPS证书私钥、云API访问密钥都算服务器密钥,但用途、存放位置和泄露后果完全不同。
服务器密钥是做什么的?先分清SSH密钥、SSL私钥和API密钥
把服务器密钥当成一把钥匙并不准确,它更像一套身份体系:有的负责开门,有的负责把门锁加密,有的负责让程序代替人操作云资源,据工信部发布的网络安全相关公开信息,弱口令和密钥泄露一直是服务器入侵的常见入口。
SSH密钥对:登录服务器的钥匙
SSH密钥对由公钥和私钥组成,公钥放到服务器,私钥留在本地电脑,登录时服务器发随机挑战,本地私钥签名,服务器用公钥验证。
- 生成命令:
ssh-keygen -t ed25519 -C "ops@example.com" - 默认私钥:
~/.ssh/id_ed25519 - 默认公钥:
~/.ssh/id_ed25519.pub - 上传公钥:
ssh-copy-id user@服务器IP - 手动追加:
cat id_ed25519.pub >> ~/.ssh/authorized_keys - 权限设置:
chmod 700 ~/.ssh,chmod 600 ~/.ssh/authorized_keys
私钥文件权限必须是600,权限过宽,OpenSSH会直接拒绝使用。私钥不出本地是第一条铁律。
SSL/TLS证书私钥:HTTPS加密的底牌
网站启用HTTPS时,证书里包含公钥,服务器上保存私钥,浏览器用公钥加密,服务器用私钥解密,私钥泄露,攻击者可能伪造站点或解密流量。
Nginx常见配置:
ssl_certificate /etc/nginx/ssl/fullchain.pem;ssl_certificate_key /etc/nginx/ssl/server.key;chmod 600 /etc/nginx/ssl/server.keychown root:root /etc/nginx/ssl/server.key
证书私钥不要提交到Git,不要发到聊天群,不要放在Web目录。
云API密钥:程序调用云资源的通行证
云API密钥通常叫AccessKey ID和AccessKey Secret,或API Token,它用于CLI、SDK、Terraform、CI/CD流水线调用云资源,泄露后可能被创建实例、删除数据、产生费用。
| 密钥类型 | 存放位置 | 主要用途 | 泄露后果 | 是否单独收费 |
|---|---|---|---|---|
| SSH密钥对 | 本地私钥、服务器公钥 | 登录Linux服务器 | 服务器被登录 | 否 |
| SSL证书私钥 | 服务器证书目录 | HTTPS加密 | 流量被解密或伪造 | 否,证书可能收费 |
| 云API密钥 | 配置文件、环境变量、密钥管理服务 | 调用云接口 | 资源被操控、费用增加 | 否,资源按量收费 |
服务器密钥和密码登录哪个安全?对比之后看场景
安全差异
SSH密钥通常比密码更抗暴力破解,密码可能被撞库、被猜解、被键盘记录,密钥私钥不离开本地,服务器只存公钥,攻击面更小。
但密钥不是绝对安全,私钥没设密码、私钥被复制、私钥放在共享目录,都会让安全优势归零,业内专家指出,密钥认证的关键不是算法多新,而是私钥是否始终留在可信设备。
场景选择
- 个人测试机:强密码加Fail2ban,改默认端口。
- 生产服务器:密钥登录,关闭密码认证,配合堡垒机。
- Windows远程桌面:密码加网络级认证,再加IP白名单。
- CI/CD流水线:使用短期令牌或OIDC,避免长期API密钥。
加固清单
PubkeyAuthentication yesPasswordAuthentication noPermitRootLogin prohibit-passwordAllowUsers deploy ops- 安装并配置Fail2ban
- 禁止root直接登录,使用普通用户加sudo
改完配置先别断开当前会话,新开一个终端测试密钥能登录,再重启SSH服务:systemctl restart sshd。
云服务器密钥丢失怎么办?恢复路径与预防清单
先判断丢失类型
- 本地私钥丢了,服务器还能通过控制台VNC登录。
- 密钥对被删除,但实例还在运行。
- 私钥泄露,需要立即轮换。
- 私钥没丢,但公钥被误删。
恢复步骤
- 登录云控制台,使用VNC或救援模式进入服务器。
- 如果支持,重置实例密码,先用密码进入。
- 本地重新生成密钥:
ssh-keygen -t ed25519 -C "recovery" - 把新公钥写入:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
cat new_key.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys- 新开终端测试:
ssh -i new_key user@服务器IP - 确认可用后,再删除旧公钥,关闭密码登录。
预防清单
- 私钥备份到密码管理器或加密磁盘。
- 一台服务器至少保留两把可用密钥。
- 生产环境通过堡垒机登录,不直接暴露22端口。
- 关闭密码前,先确认新密钥能登录。
- 定期做快照,但快照不要包含明文私钥。
服务器密钥需要花钱吗?价格与获取渠道
SSH密钥免费
ssh-keygen是OpenSSH自带工具,不收费,云厂商创建密钥对也通常免费,真正花钱的是服务器资源、带宽和运维时间。
SSL证书有免费也有付费
Let’s Encrypt提供免费DV证书,有效期90天,可用Certbot自动续期,商业证书按域名数量、验证级别、保修金额定价,OV和EV证书通常比DV贵,国内云厂商也提供免费DV证书和付费证书,价格随品牌和年限变化。
API密钥不单独收费
云API密钥本身不收费,但用密钥创建实例、调用对象存储、跑大数据任务,会按资源计费。密钥泄露最怕的不是密钥费,而是别人拿你的密钥开机器、刷流量、删数据。
国内服务器密钥怎么配置?Linux与Windows实操
Linux服务器配置SSH密钥
- 本地生成:
ssh-keygen -t ed25519 -C "deploy" - 上传公钥:
ssh-copy-id deploy@服务器IP - 编辑配置:
sudo vi /etc/ssh/sshd_config - 设置:
PubkeyAuthentication yes - 设置:
PasswordAuthentication no - 重启:
sudo systemctl restart sshd - 测试:
ssh -i ~/.ssh/id_ed25519 deploy@服务器IP
Windows服务器配置密钥
Windows Server可用OpenSSH,管理员PowerShell执行:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0Start-Service sshdSet-Service -Name sshd -StartupType Automatic- 公钥放到
C:Users用户名.sshauthorized_keys - 权限只允许该用户和SYSTEM访问
如果用PuTTY,先用PuTTYgen把

.pem转成.ppk,登录时选择私钥文件。
云控制台密钥对操作
- 进入云服务器控制台。
- 找到密钥对或SSH密钥。
- 创建密钥对,下载私钥
.pem。 - 绑定到目标实例。
- 重启或按提示生效。
- 本地
chmod 600 key.pem。 - 登录:
ssh -i key.pem root@公网IP
服务器密钥管理:生成、存储、轮换与审计
生成
按用途分开生成,登录密钥、CI密钥、备份密钥不要共用,推荐Ed25519,兼容性不足时用RSA 4096。
存储
私钥放加密磁盘或密码管理器,API密钥放环境变量或密钥管理服务,不要写进代码,不要提交到Git,行业共识认为,生产环境应做到一人一密钥、最小权限和定期轮换。
轮换
- SSH密钥建议按人员变动、安全事件、周期策略轮换。
- API密钥设置有效期,能短期就短期。
- SSL证书到期前自动续期。
- 离职人员密钥当天禁用。
审计
- 查看登录日志:
last、lastlog、journalctl -u sshd - 查看授权公钥:
cat ~/.ssh/authorized_keys - 云平台查看API调用记录。
- 对异常IP、异常时间、异常资源创建告警。
服务器密钥的核心价值是身份、加密和授权,按类型隔离,私钥不出本地,最小权限,定期轮换,才能把风险压到可控范围。
服务器密钥常见问题解答
服务器密钥是做什么的,和密码有什么区别?
服务器密钥用于身份认证、加密通信或授权调用,密码是共享秘密,服务器端可能存储哈希;SSH密钥是公私钥对,服务器只存公钥,私钥留在本地,前者怕撞库,后者怕私钥泄露。
服务器密钥泄露后应该先做什么?
立即禁用或删除泄露的密钥,创建新密钥并绑定,检查登录日志和云API调用记录,确认没有异常实例、异常账单、异常存储访问,如果涉及SSL私钥,尽快吊销证书并重新签发。
服务器密钥可以多人共用吗?
不建议,多人共用同一把密钥,操作日志无法定位到具体人员,离职回收也容易遗漏,每人独立密钥,配合堡垒机和权限分组,才能做到可追溯、可撤销。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/893401.html

