公众号旧文
哪吒面板漏洞之后,我关掉了 SSH 密码登录
哪吒监控爆出高危漏洞,不少站长和 VPS 用户都开始检查自己的服务器。
虽然我并没有直接受到影响,但这件事还是让我意识到了问题。
我的服务器一直允许 SSH 密码登录。
平时觉得没什么,毕竟密码设置得很复杂。
但仔细想想,如果密码泄露了呢?
如果密码被暴力破解了呢?
如果哪天自己不小心把密码保存到不安全的地方呢?
于是我决定把一直拖着没做的事情完成:
开启 SSH Key 登录,关闭 SSH 密码登录。
以前我一直觉得 SSH Key 很复杂。
什么公钥、私钥,总是看得云里雾里。
这次实际操作后才发现,原理很简单:
- 私钥放自己电脑上
- 公钥放服务器上
- 登录时服务器验证私钥是否匹配
- 匹配就允许登录
整个过程中,私钥不会发送到服务器。
我使用 SecureCRT 自带的工具生成了一对 ED25519 密钥。

生成后得到两个文件:
Identity
Identity.pub
其中 Identity 是私钥,Identity.pub 是公钥。
然后把公钥添加到服务器的:
~/.ssh/authorized_keys
文件中。
配置好之后,我成功使用 SSH Key 登录服务器。
随后修改 SSH 配置:
PubkeyAuthentication yes
PasswordAuthentication no
重新加载 SSH 服务后,再检查:
sshd -T | grep passwordauthentication
输出:
passwordauthentication no
说明密码登录已经被关闭。
我还测试了一下,当客户端没有配置私钥时,服务器直接返回:
root@100.64.0.4: Permission denied (publickey).
Connection failed!
Connection closed
Press any key to continue . . .
这说明服务器已经不再接受密码认证。
至此,我的 VPS 已经从密码登录变成了 SSH Key 登录。
哪吒面板漏洞让我意识到,真正重要的安全措施并不复杂。
与其等出事之后再补救,不如花半小时把最基础的 SSH 安全配置做好。
对于拥有 VPS 的朋友来说,如果还在使用密码登录,我觉得值得找个时间试试 SSH Key 登录。
配置完成之后,你会发现比密码更安全,也更方便。
附:常见 SSH 密钥默认存放位置
Linux(OpenSSH)
生成命令:ssh-keygen -t ed25519
默认位置:
~/.ssh/id_ed25519 私钥
~/.ssh/id_ed25519.pub 公钥
例如:
/root/.ssh/id_ed25519
/root/.ssh/id_ed25519.pub
或:
/home/user/.ssh/id_ed25519
/home/user/.ssh/id_ed25519.pub
服务器授权公钥文件:
~/.ssh/authorized_keys
Windows 自带 OpenSSH
Windows 10 / Windows 11 默认位置:
C:\Users\用户名\.ssh\id_ed25519
C:\Users\用户名\.ssh\id_ed25519.pub
例如:
C:\Users\ABCD\.ssh\id_ed25519
C:\Users\ABCD\.ssh\id_ed25519.pub
OpenSSH 会自动读取这里的私钥。
因此:
ssh root@服务器IP
通常不需要额外指定私钥路径。
SecureCRT
SecureCRT 可以通过图形界面生成密钥:
Tools → Create Public Key
生成后的文件名称和保存位置可以自定义。
例如:
C:\Users\ABCD\Documents\Identity
C:\Users\ABCD\Documents\Identity.pub
其中:
Identity 私钥
Identity.pub 公钥
SecureCRT 不要求固定路径。
只需要在 Session 配置中指定私钥文件即可。
一句话总结
服务器保存公钥(authorized_keys)
客户端保存私钥(id_ed25519 / Identity)
谁拥有对应的私钥,谁就能通过 SSH Key 登录服务器。