云服务器换成:密钥登录 + 禁密码登录(防暴力破解)

(1)本地生成密钥对:

* 先判断自己电脑确认有没有 OpenSSH,打开 cmd/powershell 都可以,执行:

ssh -V

如果输出类似 OpenSSH_for_Windows_8.x → 有,直接往下走。
如果提示"不是内部或外部命令" → 去 设置 → 应用 → 可选功能 → 添加功能 → OpenSSH 客户端,装完重开终端。

* 在自己本地生成密钥对。

# 后面的 doublepin@downin 随便取,一般是:应用名称@邮箱
ssh-keygen -t ed25519 -C "doublepin@downin"

回车后会问你:
Enter file in which to save the key → 直接回车(默认存到 C:\Users\你的用户名\.ssh\id_ed25519)
Enter passphrase → 建议设一个(比如 DpKey#2026),这样即使私钥被盗,别人也用不了。不想设就直接两次回车跳过。
生成完后,.ssh 目录下会有两个文件:
id_ed25519 → 私钥,永远别给别人
id_ed25519.pub → 公钥,要放到服务器上

* 确认一下:

type C:\Users\你的用户名\.ssh\id_ed25519.pub

能看到一行以 ssh-ed25519 开头的文字,就是公钥内容。

(2)把公钥推送到服务器

方式一:有 ssh-copy-id(部分 Win11 自带)

ssh-copy-id root@服务器公网IP

输入一次服务器 root 密码,它会自动把公钥追加到服务器的 ~/.ssh/authorized_keys 里。

方式二:手动操作

1、先看看本地公钥内容:

type C:\Users\你的用户名\.ssh\id_ed25519.pub

全选复制那一行。

2、使用其他工具,比如 xshell 登录云服务器,在服务器上执行

mkdir -p ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys

把刚才 1 复制的那一行,粘贴进去,然后保存退出

3、设权限(这步必须做,否则密钥不生效):

chmod 600 ~/.ssh/authorized_keys

(3)验证密钥登录是否能通,再关闭密码登录

1、新开一个 Win11 命令行窗口,执行:

ssh root@服务器公网IP

如果设了 passphrase → 提示输入密钥密码,输入后登入成功
如果没设 passphrase → 直接登入成功
能登进去 = 密钥生效了。​ 如果还是提示输入 root 密码,说明公钥没放对位置或权限不对,回去检查第二步。

(4)确认无误后,禁用密码登录

在服务器 xshell 这边的命令行里面:

vi /etc/ssh/sshd_config

找到或直接在文件末尾加:

# 禁用密码登录
PasswordAuthentication no
# 禁用空密码
PermitEmptyPasswords no
# 确保密钥登录是开的(默认就是 yes,确认一下)
PubkeyAuthentication yes

保存退出,然后先测试配置文件有无语法错误:

sshd -t

没输出 = 配置正确。有报错就按提示修。

重启 sshd:

systemctl restart sshd

(5)最终验证

本地重开一个 cmd/powershell 窗口

ssh root@服务器公网IP

应该直接进(或只问密钥密码),不再要 root 密码

(6)可选加固(锦上添花)

vi /etc/ssh/sshd_config

追加

# 禁止 root 直接登录(改用普通用户 + sudo)
# PermitRootLogin no
# 如果你暂时还想用 root 登录就别加这行,等熟悉了再加

# 限制允许登录的用户(比如只允许 dp 这个用户)
# AllowUsers dp

 

posted @ 2026-09-09 17:01  雪化山河  阅读(8)  评论(0)    收藏  举报