创建SSH密钥并将登录方式设置为密钥认证

创建SSH密钥并将登录方式设置为密钥认证

所谓诚其意者 毋自欺也

创建SSH密钥并将登录方式设置为密钥认证

在这篇博客中,我们将详细介绍如何生成SSH密钥对,并将其应用于你的VPS(以RackNerd为例),从而实现更安全的密钥认证登录方式,替代传统的密码登录。通过以下步骤,你可以轻松地为你的服务器加固安全防线。

提示: 如果你安装了像 1Panel 这样的服务器管理面板,通常可以直接在面板的图形界面中完成密钥的生成和配置,这往往比以下手动步骤更简便快捷。

1. 生成SSH密钥对

要使用密钥认证,首先你需要在你的 本地计算机(或者你信任的设备)上生成一个SSH密钥对,它包含一个 私钥(必须妥善保管,不能泄露)和一个 公钥(需要上传到服务器)。以下是几种常用的生成方法:

方法一:使用 Termius (移动端或桌面端)

Termius 提供了一个内置的SSH密钥生成器,操作直观,尤其适合在移动设备上使用。

  1. 打开 Termius 应用。
  2. 点击右下角的小齿轮图标进入 Settings
  3. 选择 Keychain
  4. 点击 Key 图标旁的 + 号或类似按钮,选择 Generate Key
    Termius Key Generation
  5. 按照提示操作,生成后请保存好 私钥(通常Termius会帮你管理),并复制 公钥 备用。

方法二:使用 MobaXterm 或 Puttygen (PC端)

如果你更习惯在Windows PC上操作,MobaXterm (自带) 或独立的 Puttygen 是非常好的选择。

  1. 打开 MobaXterm,选择 Tools -> MobaKeyGen (PuTTYgen);或者直接运行下载好的 puttygen.exe
  2. 点击 Generate 按钮。
  3. 根据提示,在空白区域内随机移动鼠标以产生足够的随机性来生成密钥。
  4. 密钥生成后,界面上会显示 公钥 文本,请将其完整复制出来备用。
  5. (可选但推荐)为私钥设置一个密码(passphrase),增加安全性。
  6. 点击 Save private key私钥 保存到你的计算机上一个安全的位置(例如,保存为 .ppk 文件供 Putty 或 MobaXterm 使用)。

重要提示: 请务必妥善保管你生成的 私钥 文件,不要泄露给任何人。公钥可以随时从私钥重新生成(通过 Load 功能加载私钥即可看到),所以即使忘记复制公钥文本也没关系,只要私钥还在。

方法三:使用 1Panel 面板 (服务器端)

如果你的VPS上安装了类似1Panel的管理面板,其通常会提供直接生成和管理SSH密钥的功能。具体操作请参考相应面板的文档。

方法四:使用 ssh-keygen 命令行 (Linux/macOS/WSL)

你也可以直接在你的本地Linux、macOS终端,或者Windows的WSL/Git Bash环境中使用 ssh-keygen 命令来生成密钥:

1
2
3
4
5
# 建议使用 ed25519 算法,更现代且安全,如果不支持再考虑 RSA
ssh-keygen -t ed25519 -C "your_email@example.com"

# 或者使用 RSA 4096 位密钥
# ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t 指定密钥类型(ed25519rsa)。
  • -b 指定密钥长度(仅对RSA需要,推荐4096)。
  • -C 添加注释,通常用邮箱地址标识密钥。

执行命令后,系统会提示你:

  1. 指定密钥文件保存位置:直接回车即可,默认保存在 ~/.ssh/ 目录下(例如 id_ed25519id_ed25519.pub)。
  2. **设置私钥密码 (passphrase)**:强烈建议设置一个健壮的密码。输入密码时屏幕上不会显示字符。如果留空直接回车,则私钥没有密码保护。

命令执行完毕后,会在指定目录下生成两个文件:私钥(如 id_ed25519)和公钥(如 id_ed25519.pub)。你需要的是 .pub 文件里的内容。

2. 配置目标服务器 (以 RackNerd VPS 为例)

生成密钥对后,下一步就是将你的 公钥 上传到需要登录的服务器(例如你的 RackNerd VPS),并配置SSH服务以接受密钥认证。

上传公钥

  1. 首先,使用你现有的方式(例如密码)登录到你的VPS。建议切换到你希望使用密钥登录的用户(通常是 root 或你创建的普通用户)。这里以 root 用户为例。

  2. 进入该用户的 .ssh 目录。如果目录不存在,需要创建它并设置正确的权限。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 切换到目标用户的主目录
    # cd ~ (如果不是root,确保在用户的home目录下)

    # 创建 .ssh 目录(如果不存在)并进入
    mkdir -p ~/.ssh
    cd ~/.ssh

    # 设置正确的目录权限(非常重要!)
    chmod 700 ~/.ssh
  3. 将你 本地 生成的 公钥内容 添加到服务器的 authorized_keys 文件中。

    • 你可以使用 nanovim 等文本编辑器打开(或创建)这个文件:

      1
      nano authorized_keys
    • 将你之前复制的 公钥文本 (通常以 ssh-ed25519ssh-rsa 开头,后面跟着一长串字符和你的注释邮箱) 完整地粘贴到文件的新一行。

    • 保存文件并退出编辑器 (在 nano 中是 Ctrl+X,然后按 Y 确认,再按 Enter 确认文件名)。

  4. 设置 authorized_keys 文件的正确权限(非常重要!):

    1
    chmod 600 ~/.ssh/authorized_keys
    • 权限设置不正确会导致密钥认证失败。700 意味着只有所有者可读/写/执行,600 意味着只有所有者可读/写。

修改 SSH 服务配置

接下来,需要修改SSH服务的配置文件 (sshd_config) 来启用密钥认证,并(强烈建议)禁用密码认证以提高安全性。

  1. 使用 nanovim 以 root 权限编辑配置文件:

    1
    sudo nano /etc/ssh/sshd_config
  2. 在文件中找到以下几项,并确保它们的值如下设置(如果某项被 # 注释掉了,请去掉 # 使其生效):

    • 启用公钥认证:

      1
      PubkeyAuthentication yes
    • 指定公钥文件路径 (通常无需修改,默认即可):

      1
      AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
    • (推荐) 禁止 root 用户使用密码登录:

      1
      2
      3
      PermitRootLogin without-password 
      # 或者 prohibit-password,效果类似,都是禁止密码登录,只允许密钥
      # 如果你想完全禁止root登录(推荐创建普通用户再sudo),可以设为 no
    • (强烈推荐) 禁用密码认证:

      1
      PasswordAuthentication no

      警告: 禁用密码认证前,务必确保你的密钥认证已经可以成功登录!否则你将无法通过密码登录服务器。

  3. 仔细检查修改无误后,保存文件并退出编辑器。

重启 SSHD 服务

最后,需要重启 SSH 服务来应用刚才的配置更改:

1
2
3
sudo systemctl restart sshd
# 或者如果系统不支持 systemctl,可以尝试:
# sudo service sshd restart

!!!极其重要!!!
关闭 当前你通过密码登录的SSH会话 之前,请 务必 打开一个新的终端窗口或使用你的SSH客户端,尝试使用你刚刚配置的 私钥 来登录服务器。

确保你能够成功通过密钥登录后,再关闭旧的密码登录会话。这一步是为了防止因配置错误(如公钥粘贴错误、权限设置错误、sshd_config 修改错误等)导致你同时失去密码和密钥两种登录方式,从而无法访问你的服务器!

3. 使用密钥登录

至此,你的服务器已经配置完成,应该可以通过SSH密钥进行更安全的登录了。

当你使用SSH客户端(如 Termius、MobaXterm、Putty、或者命令行的 ssh)连接服务器时:

  • 对于图形化客户端: 通常需要在连接设置中指定你本地保存的 私钥文件 的路径。如果设置了私钥密码 (passphrase),连接时会提示你输入该密码。
  • 对于命令行 ssh 如果你的私钥文件位于默认路径 (~/.ssh/id_ed25519~/.ssh/id_rsa),并且文件名是默认的,通常可以直接登录 ssh user@your_server_ip。如果私钥文件路径或名称不同,或者你想明确指定,可以使用 -i 参数:ssh -i /path/to/your/private_key user@your_server_ip

使用密钥登录不仅大大提高了安全性,避免了密码被暴力破解的风险,同时也省去了每次登录输入密码的麻烦(除非你为私钥设置了密码)。

  • Title: 创建SSH密钥并将登录方式设置为密钥认证
  • Author:
  • Created at : 2024-02-11 00:50:31
  • Updated at : 2025-04-29 23:11:48
  • Link: https://xblog.aptzone.cc/2024/02/11/创建SSH密钥并将RackNerd登录方式设置为密钥认证/
  • License: All Rights Reserved © 凡
Comments