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

如何配置 SSH 密钥认证?密钥认证相比密码认证有哪些优势?

3月6日 23:38

SSH 密钥认证使用非对称加密技术,通过公钥和私钥对进行身份验证,比密码认证更安全、更便捷。

密钥对生成

使用 ssh-keygen 命令生成密钥对:

bash
# 生成 RSA 密钥(默认) ssh-keygen -t rsa -b 4096 # 生成 ED25519 密钥(推荐,更安全高效) ssh-keygen -t ed25519 # 指定文件名和注释 ssh-keygen -t ed25519 -f ~/.ssh/my_key -C "user@example.com"

密钥对组成

  • 私钥:必须保密,通常保存在 ~/.ssh/id_rsa~/.ssh/id_ed25519
  • 公钥:可以公开,通常保存在 ~/.ssh/id_rsa.pub~/.ssh/id_ed25519.pub

配置步骤

  1. 生成密钥对:在客户端运行 ssh-keygen
  2. 复制公钥到服务器
    bash
    # 方法1:使用 ssh-copy-id ssh-copy-id user@hostname # 方法2:手动复制 cat ~/.ssh/id_ed25519.pub | ssh user@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
  3. 设置权限
    bash
    chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

优势

  1. 安全性更高:私钥不易被破解,无需传输密码
  2. 便捷性:无需每次输入密码,支持自动化脚本
  3. 支持多因素认证:可配合密码短语(passphrase)使用
  4. 细粒度控制:可在 authorized_keys 中限制命令、IP 等

配置示例

~/.ssh/authorized_keys 中可以设置限制:

bash
# 限制只能执行特定命令 command="echo 'Hello'" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... # 限制来源 IP from="192.168.1.0/24" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... # 禁用端口转发 no-port-forwarding ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...

最佳实践

  • 使用 ED25519 或 RSA 4096 位密钥
  • 为私钥设置强密码短语
  • 定期轮换密钥
  • 使用 SSH 代理(ssh-agent)管理密钥
  • 禁用服务器的密码认证,仅使用密钥认证
标签:SSH