改了端口、装了 Fail2Ban 只是增加了破解难度,而 SSH 密钥登录 才是真正把“门锁”焊死。
它的原理是:在你的电脑生成一对“钥匙”(公钥和私钥),把公钥丢给 VPS。以后登录时,VPS 核对你手里的私钥,对上了就直接放行,根本不需要输入密码。
第一步:在本地电脑生成密钥
这一步在你自己的电脑(Windows CMD 或 Mac 终端)上操作,不要连 VPS。
-
打开 CMD (Windows) 或 终端 (Mac)。
-
输入生成命令:
ssh-keygen -t ed25519 -C "my-vps-key" -
一路按回车(不需要设密码,除非你想要双重保险)。
-
生成的密钥会保存在你的用户目录下(通常是
.ssh文件夹)。
第二步:把“公钥”装进 VPS
我们需要把刚才生成的 公钥 (Public Key) 内容复制到 VPS 上。
-
查看公钥内容:
- Windows CMD 输入:
type %userprofile%\.ssh\id_ed25519.pub - Mac/Linux 输入:
cat ~/.ssh/id_ed25519.pub
(你会看到以
ssh-ed25519开头的一长串字符,把它完整复制下来。) - Windows CMD 输入:
-
粘贴到 VPS:
- 连接你的 VPS:
ssh root@你的IP -p 56789(注意替换端口) - 创建存放目录(如果没有):
mkdir -p ~/.ssh && chmod 700 ~/.ssh - 编辑授权文件:
nano ~/.ssh/authorized_keys - 操作: 在编辑器里粘贴你刚才复制的那串公钥。
- 保存: 按
Ctrl + O保存,Ctrl + X退出。 - 赋予正确权限(这一步极其重要,权限不对登录会失败):
chmod 600 ~/.ssh/authorized_keys
- 连接你的 VPS:
第三步:验证密钥登录 (关键!)
🚨 警告:千万别急着关窗口! 先验证密钥好不好用,否则一旦失败你就把自己锁在外面了。
- 保持当前的 VPS 连接不要断开(留一条后路)。
- 新开一个本地 CMD 窗口。
- 输入登录命令:
ssh root@你的IP -p 56789 - 判定标准: 如果没有让你输密码直接进了系统,说明密钥配置成功!🎉
第四步:禁用密码登录 (关门)
确认密钥能用后,我们把“密码登录”这个功能彻底关掉。以后谁想试密码都试不了。
-
在 VPS 里编辑配置文件:
nano /etc/ssh/sshd_config -
找到以下两项,按如下修改(找不到就手动添加在最后):
# 禁用密码验证 PasswordAuthentication no # 启用密钥验证 PubkeyAuthentication yes -
保存退出 (
Ctrl + O,Ctrl + X)。 -
重启 SSH 服务让配置生效:
systemctl restart sshd
📖 博客补充篇:VPS 重生后,如何快速“召回”老密钥?
- 前言:重装不是终结,而是纯净的开始 在之前的文章中,我们学会了如何生成并配置 SSH 密钥。但当你点击了 RackNerd 后台那个绿色的 “Reinstall”(重新安装)按钮后,原本服务器里的密钥会被彻底抹除。
别担心,只要你本地的“金钥匙”还在,10 秒钟就能满血复活。
- 第一步:定位你本地的“金钥匙” 在你电脑的 .ssh 目录下(通常是 C:\Users\用户名.ssh),你会看到那个后缀名为 .pub 的文件。例如最先进的 id_ed25519.pub。
极客提醒:虽然 Windows 可能会把它识别成“Microsoft Publisher”文件,别管它,直接用记事本打开。
- 第二步:暴力“焊入”新系统 当你用重装后获得的新密码连入崭新的 Ubuntu 22.04 后,直接执行以下这行“三合一”绝杀指令:
# 一键创建目录、写入密钥、锁定权限
mkdir -p ~/.ssh && echo "粘贴你 id_ed25519.pub 里的全部内容" >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
- 第三步:验证与绝杀(禁用密码登录) 验证:开个新窗口尝试 ssh root@你的IP,你会发现不再弹密码框,直接秒进!
绝杀:确定密钥生效后,记得回到上一篇教程,将 PasswordAuthentication 修改为 no,彻底封死黑客爆破的可能。
总结
从此以后,这台 VPS 只认你电脑里的那把“钥匙”。无论你是从 Debian 换到 Ubuntu,还是买了第 100 台新 VPS,只要这一行指令,你就是这台机器永恒的主人。
备忘录: 请务必备份好你本地电脑的
.ssh文件夹!如果电脑丢了或者重装系统,没有私钥你也进不去 VPS 了(那时候只能去服务商后台用 VNC 救急)。
💡 提示: > 本文首发于我的个人博客 Velo.x 的极客空间。我在那里存放了更完整的 拒绝 22 号门:修改 SSH 默认端口防止扫描系列教程,排版更精美,更新也更及时,欢迎来踩踩!🚀