密钥对是怎么用的
密钥认证用的是非对称加密:生成时得到一对密钥,私钥留在自己手里,公钥可以放心分发到服务端的授权文件里。登录时服务端用公钥出一道只有对应私钥能解的题,客户端解开即证明身份,口令不会在网络中传输,也不存在被穷举的空间。生成时要选算法与位数、给私钥加口令短语保护、把文件权限收好,分发时用现成工具把公钥写进服务端。三件事做完,才算把这条通道建稳。
基本信息
| 生成命令 | 密钥生成工具,可指定算法、位数、备注与输出路径 |
|---|---|
| 算法选择 | 现代系统优先使用较新的椭圆曲线算法 |
| 兼容方案 | 老系统不支持新算法时退回指定位数的 RSA |
| 密钥长度 | RSA 建议不低于 2048 位,常用 4096 位 |
| 口令短语 | 生成时可设置,私钥泄露后仍多一层保护 |
| 文件权限 | 目录与私钥必须收紧,否则认证会被拒绝 |
典型使用场景
- 替代口令登录:为运维账号与自动化流程建立密钥通道
- 免交互自动化:发布与批处理脚本通过密钥登录目标机
- 集中运维:为团队账号统一部署公钥,便于权限回收
- 多机分发:把同一公钥写入多台目标机的授权文件
- 兼容老系统:目标环境较旧时选择受支持的算法与位数
- 凭据管理:私钥加口令短语并配合代理使用,兼顾安全与便利
生成与分发
生成与分发
ssh-keygen -t ed25519 -C 'ops@company' -f ~/.ssh/id_ed25519 # 生成密钥对并加备注
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_legacy # 兼容老系统的备选方案
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@10.0.10.21 # 分发公钥到目标机
ssh -i ~/.ssh/id_ed25519 deploy@10.0.10.21 'hostname' # 验证密钥登录可用
chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_ed25519 # 收紧目录与私钥权限
ssh-add ~/.ssh/id_ed25519 # 加载到代理,免去重复输入口令文件与权限要点
| 对象 | 建议权限 | 说明 |
|---|---|---|
| 密钥目录 | 仅属主可访问 | 对组或其它用户开放写权限会被拒绝 |
| 私钥文件 | 仅属主可读写 | 权限过宽时客户端直接拒绝使用 |
| 公钥文件 | 普通可读即可 | 内容可公开分发 |
| 服务端授权文件 | 仅属主可读写 | 权限过宽同样会导致认证失败 |
| 已知主机文件 | 自动维护 | 记录目标主机指纹,首次连接时确认 |
新算法在较老的系统中可能不被支持,这类环境需要退回到指定位数的 RSA。选型时以目标端实际支持的算法为准,可以先在测试机上验证一次登录,再决定统一采用哪种密钥类型,避免批量部署后集体用不了。
私钥不要在多台机器之间复制扩散,也不要把带口令短语的私钥明文写在脚本里:一旦泄露,等于把对应账号交出去。规范做法是每人使用独立密钥、代理转发代替拷贝,并建立密钥的登记与撤销流程。