
创建SSH密钥并将登录方式设置为密钥认证
创建SSH密钥并将登录方式设置为密钥认证
在这篇博客中,我们将详细介绍如何生成SSH密钥对,并将其应用于你的VPS(以RackNerd为例),从而实现更安全的密钥认证登录方式,替代传统的密码登录。通过以下步骤,你可以轻松地为你的服务器加固安全防线。
提示: 如果你安装了像 1Panel 这样的服务器管理面板,通常可以直接在面板的图形界面中完成密钥的生成和配置,这往往比以下手动步骤更简便快捷。
1. 生成SSH密钥对
要使用密钥认证,首先你需要在你的 本地计算机(或者你信任的设备)上生成一个SSH密钥对,它包含一个 私钥(必须妥善保管,不能泄露)和一个 公钥(需要上传到服务器)。以下是几种常用的生成方法:
方法一:使用 Termius (移动端或桌面端)
Termius 提供了一个内置的SSH密钥生成器,操作直观,尤其适合在移动设备上使用。
- 打开 Termius 应用。
- 点击右下角的小齿轮图标进入
Settings
。 - 选择
Keychain
。 - 点击
Key
图标旁的+
号或类似按钮,选择Generate Key
。 - 按照提示操作,生成后请保存好 私钥(通常Termius会帮你管理),并复制 公钥 备用。
方法二:使用 MobaXterm 或 Puttygen (PC端)
如果你更习惯在Windows PC上操作,MobaXterm (自带) 或独立的 Puttygen 是非常好的选择。
- 打开 MobaXterm,选择
Tools
->MobaKeyGen (PuTTYgen)
;或者直接运行下载好的puttygen.exe
。 - 点击
Generate
按钮。 - 根据提示,在空白区域内随机移动鼠标以产生足够的随机性来生成密钥。
- 密钥生成后,界面上会显示 公钥 文本,请将其完整复制出来备用。
- (可选但推荐)为私钥设置一个密码(
passphrase
),增加安全性。 - 点击
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 | # 建议使用 ed25519 算法,更现代且安全,如果不支持再考虑 RSA |
-t
指定密钥类型(ed25519
或rsa
)。-b
指定密钥长度(仅对RSA需要,推荐4096)。-C
添加注释,通常用邮箱地址标识密钥。
执行命令后,系统会提示你:
- 指定密钥文件保存位置:直接回车即可,默认保存在
~/.ssh/
目录下(例如id_ed25519
和id_ed25519.pub
)。 - **设置私钥密码 (passphrase)**:强烈建议设置一个健壮的密码。输入密码时屏幕上不会显示字符。如果留空直接回车,则私钥没有密码保护。
命令执行完毕后,会在指定目录下生成两个文件:私钥(如 id_ed25519
)和公钥(如 id_ed25519.pub
)。你需要的是 .pub
文件里的内容。
2. 配置目标服务器 (以 RackNerd VPS 为例)
生成密钥对后,下一步就是将你的 公钥 上传到需要登录的服务器(例如你的 RackNerd VPS),并配置SSH服务以接受密钥认证。
上传公钥
首先,使用你现有的方式(例如密码)登录到你的VPS。建议切换到你希望使用密钥登录的用户(通常是
root
或你创建的普通用户)。这里以root
用户为例。进入该用户的
.ssh
目录。如果目录不存在,需要创建它并设置正确的权限。1
2
3
4
5
6
7
8
9# 切换到目标用户的主目录
# cd ~ (如果不是root,确保在用户的home目录下)
# 创建 .ssh 目录(如果不存在)并进入
mkdir -p ~/.ssh
cd ~/.ssh
# 设置正确的目录权限(非常重要!)
chmod 700 ~/.ssh将你 本地 生成的 公钥内容 添加到服务器的
authorized_keys
文件中。你可以使用
nano
、vim
等文本编辑器打开(或创建)这个文件:1
nano authorized_keys
将你之前复制的 公钥文本 (通常以
ssh-ed25519
或ssh-rsa
开头,后面跟着一长串字符和你的注释邮箱) 完整地粘贴到文件的新一行。保存文件并退出编辑器 (在
nano
中是Ctrl+X
,然后按Y
确认,再按Enter
确认文件名)。
设置
authorized_keys
文件的正确权限(非常重要!):1
chmod 600 ~/.ssh/authorized_keys
- 权限设置不正确会导致密钥认证失败。
700
意味着只有所有者可读/写/执行,600
意味着只有所有者可读/写。
- 权限设置不正确会导致密钥认证失败。
修改 SSH 服务配置
接下来,需要修改SSH服务的配置文件 (sshd_config
) 来启用密钥认证,并(强烈建议)禁用密码认证以提高安全性。
使用
nano
或vim
以 root 权限编辑配置文件:1
sudo nano /etc/ssh/sshd_config
在文件中找到以下几项,并确保它们的值如下设置(如果某项被
#
注释掉了,请去掉#
使其生效):启用公钥认证:
1
PubkeyAuthentication yes
指定公钥文件路径 (通常无需修改,默认即可):
1
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
(推荐) 禁止 root 用户使用密码登录:
1
2
3PermitRootLogin without-password
# 或者 prohibit-password,效果类似,都是禁止密码登录,只允许密钥
# 如果你想完全禁止root登录(推荐创建普通用户再sudo),可以设为 no(强烈推荐) 禁用密码认证:
1
PasswordAuthentication no
警告: 禁用密码认证前,务必确保你的密钥认证已经可以成功登录!否则你将无法通过密码登录服务器。
仔细检查修改无误后,保存文件并退出编辑器。
重启 SSHD 服务
最后,需要重启 SSH 服务来应用刚才的配置更改:
1 | sudo systemctl restart sshd |
!!!极其重要!!!
在 关闭 当前你通过密码登录的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 © 凡