服务器配置SSH密钥登陆

使用 SSH 密钥登录服务器是一种安全高效的身份验证方法,它通过密钥对代替密码来增强安全性。以下是设置和使用 SSH 密钥登录服务器的步骤:

步骤 1:本地生成 SSH 密钥对

  1. 在本地机器上生成密钥对:

    1
    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    • -t rsa: 指定密钥类型为 RSA。
    • -b 4096: 设置密钥长度为 4096 位。
    • -C "[email protected]": 添加一个注释(可选,用于标识密钥)。
  2. 在提示时指定密钥文件的保存路径(默认 ~/.ssh/id_rsa)和密码短语(可选,但推荐设置以提高安全性)。

  3. 以上命令会生成3个文件:

    • id_rsa: 私钥(不要公开)
    • id_rsa.pub: 公钥(上传服务器)
    • known_hosts: 远程服务器的公钥指纹文件

步骤 2:将公钥复制到服务器

  1. 使用以下命令将公钥复制到服务器(推荐):

    1
    ssh-copy-id username@server_ip
    • 替换 username 为服务器的用户名,server_ip 为服务器的 IP 地址。
    • 系统会提示输入服务器的密码,公钥将自动添加到服务器的 ~/.ssh/authorized_keys 文件中。
  2. 如果无法使用 ssh-copy-id,可以手动将公钥复制到服务器:

    • 查看公钥内容:
      1
      cat ~/.ssh/id_rsa.pub
    • 登录服务器:
      1
      ssh username@server_ip
    • 在服务器上创建 .ssh 目录(如不存在)并设置权限:
      1
      2
      mkdir -p ~/.ssh
      chmod 700 ~/.ssh
    • 将公钥追加到 authorized_keys 文件:
      1
      2
      echo "your-public-key-content" >> ~/.ssh/authorized_keys
      chmod 600 ~/.ssh/authorized_keys

步骤 3:测试 SSH 密钥登录

  1. 使用以下命令测试:
    1
    ssh username@server_ip
  2. 如果配置正确,应该无需输入密码即可登录(若设置了密码短语,则需输入短语)。

步骤 4:禁用密码登录(可选,增强安全性)

  1. 编辑服务器的 SSH 配置文件:
    1
    sudo vi /etc/ssh/sshd_config
  2. 确保以下设置:
    1
    2
    PasswordAuthentication no
    PubkeyAuthentication yes
  3. 重启 SSH 服务:
    1
    sudo systemctl restart sshd

注意事项

  • 始终为私钥设置适当的权限(本地):chmod 600 ~/.ssh/id_rsa
  • 确保本地和服务器的 .ssh 目录及相关文件权限正确。
  • 在禁用密码登录前,确认 SSH 密钥登录无误,否则可能导致无法访问服务器。