温馨提示×

Debian SSH密钥认证如何设置

小樊
42
2025-11-29 01:26:39
栏目: 智能运维

Debian SSH 密钥认证设置指南

一 准备与生成密钥对

  • 在本地客户端安装 OpenSSH 客户端(如未安装):sudo apt update && sudo apt install -y openssh-client
  • 生成密钥对(推荐 RSA 4096,也可使用 ed25519):
    • RSA:ssh-keygen -t rsa -b 4096 -C “you@example.com”
    • Ed25519:ssh-keygen -t ed25519 -C “you@example.com”
  • 按提示选择保存路径(默认 ~/.ssh/id_rsa~/.ssh/id_ed25519),建议为私钥设置密码短语(passphrase)提升安全性。
  • 生成的私钥(如 id_rsaid_ed25519)必须严格保密,权限建议 600

二 将公钥部署到服务器

  • 方法一(推荐):使用 ssh-copy-id 自动追加公钥到服务器 ~/.ssh/authorized_keys
    • 默认端口:ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip
    • 自定义端口(如 2222):ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 user@server_ip
  • 方法二:手动复制
    • 本地查看公钥:cat ~/.ssh/id_rsa.pub(或 id_ed25519.pub),复制整行内容。
    • 服务器端执行:
      mkdir -p ~/.ssh
      echo “粘贴的公钥内容” >> ~/.ssh/authorized_keys
  • 设置目录与文件权限(服务器端):
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    chown -R user:user ~/.ssh
  • 说明:Debian 上 SSH 服务单元通常为 ssh.service(而非 sshd.service),后续重启也使用 ssh。

三 连接与客户端配置

  • 使用私钥连接:
    • 默认端口:ssh -i ~/.ssh/id_rsa user@server_ip
    • 自定义端口:ssh -i ~/.ssh/id_rsa -p 2222 user@server_ip
  • 简化连接(可选):编辑本地 ~/.ssh/config
    Host myserver
    HostName server_ip
    User user
    Port 2222
    IdentityFile ~/.ssh/id_rsa
    之后可直接执行:ssh myserver
  • 使用密钥代理避免重复输入私钥密码短语:
    eval “$(ssh-agent -s)”
    ssh-add ~/.ssh/id_rsa

四 服务器端安全与可选优化

  • 编辑 /etc/ssh/sshd_config,确保启用密钥认证并禁用密码登录(在确认密钥登录可用后再禁用):
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    PasswordAuthentication no
  • 可选加固:
    • 修改默认端口:Port 2222(或其他未被占用端口)
    • 禁止 root 直登:PermitRootLogin no
  • 使配置生效:sudo systemctl restart ssh
  • 重要提示:在关闭当前会话前,务必新开一个终端测试密钥登录是否成功,避免被锁。

五 常见问题排查

  • 权限问题:确保 ~/.ssh700authorized_keys600,属主为相应用户;否则公钥认证可能被拒绝。
  • 端口与防火墙:若更改了端口(如 2222),需放行对应端口(UFW:sudo ufw allow 2222/tcp;云安全组同理)。
  • 服务状态:确认 SSH 服务运行正常:sudo systemctl status ssh
  • 首次连接指纹确认:首次连接会提示主机指纹,核对无误再输入 yes
  • 多密钥管理:可在 ~/.ssh/config 中为不同主机指定不同 IdentityFile,或在 ssh-copy-id/ssh 时用 -i 明确指定私钥。

0