乐闻世界logo
搜索文章和话题

SSH 公钥认证的原理和配置方法是什么?

2月19日 19:31

SSH 公钥认证是一种比密码认证更安全、更便捷的身份验证方式。它基于非对称加密技术,使用一对密钥(公钥和私钥)进行身份验证。

公钥认证原理

  1. 密钥对生成:客户端生成一对密钥

    • 私钥:保存在客户端本地,必须严格保密
    • 公钥:上传到服务器,可以公开分享
  2. 认证流程

    • 客户端向服务器发起连接请求
    • 服务器检查客户端的公钥是否在 ~/.ssh/authorized_keys 文件中
    • 如果公钥存在,服务器生成一个随机挑战字符串
    • 客户端使用私钥对挑战字符串进行签名
    • 服务器使用对应的公钥验证签名
    • 验证通过后,认证成功

密钥类型对比

算法密钥长度安全性性能兼容性
RSA2048/4096最好
ECDSA256/384良好
Ed25519256极高最快较新

生成 SSH 密钥

bash
# 生成 RSA 密钥 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 生成 Ed25519 密钥(推荐) ssh-keygen -t ed25519 -C "your_email@example.com"

配置公钥认证

bash
# 将公钥复制到服务器 ssh-copy-id user@hostname # 或手动复制 cat ~/.ssh/id_rsa.pub | ssh user@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

安全最佳实践

  1. 私钥保护

    • 设置强密码短语(passphrase)
    • 设置正确的文件权限(600)
    • 不要在多台设备间共享私钥
  2. 服务器配置

    • 禁用密码认证:PasswordAuthentication no
    • 禁用 root 登录:PermitRootLogin no
    • 限制登录用户:AllowUsers username
  3. 密钥管理

    • 定期轮换密钥
    • 使用不同的密钥对管理不同服务器
    • 及时撤销不再使用的公钥

优势

  • 安全性:私钥不通过网络传输,难以被窃取
  • 便捷性:无需每次输入密码
  • 自动化:便于脚本和自动化工具使用
  • 可审计性:可以追踪哪个密钥在何时登录

公钥认证已成为现代服务器管理的标准实践,特别适用于 DevOps 和自动化运维场景。

标签:SSH