使用 PowerShell 生成

1️⃣ 打开 PowerShell(管理员模式)
2️⃣ 输入命令:

ssh-keygen -t ed25519 -C "your_email@example.com"

如果 VPS 较老不支持 ed25519,可用:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

3️⃣ 系统提示:

Enter file in which to save the key (/c/Users/你的用户名/.ssh/id_ed25519):

直接按回车即可(默认保存路径:C:\Users\你的用户名.ssh\)

4️⃣ 设置密钥密码(可留空)

✅ 生成完毕后,会看到两个文件:

id_ed25519        # 私钥(保存在 Windows)
id_ed25519.pub    # 公钥(要放进 VPS)

🚀 一键脚本:配置 SSH 密钥登录 + 修改端口 + 关闭密码登录

适用于 Ubuntu / Debian / CentOS / AlmaLinux 等主流 Linux VPS

1️⃣ 登录你的 VPS(用当前密码):

ssh root@你的VPS_IP

2️⃣ 在 VPS 上执行以下脚本(可直接复制整段):

# ==== 自动配置 SSH ====
# 目标:添加密钥登录、禁用密码登录、更改端口25701

# ① 设置变量(你可以改成自己想要的端口)
SSH_PORT=25701

# ② 创建SSH目录
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# ③ 添加你本地生成的公钥内容(请在下一行替换)
cat > ~/.ssh/authorized_keys <<'EOF'
你的 id_ed25519.pub 公钥内容粘贴在这里
EOF

chmod 600 ~/.ssh/authorized_keys

# ④ 修改 SSH 配置文件
SSHD_CONFIG="/etc/ssh/sshd_config"

# 备份配置
cp $SSHD_CONFIG ${SSHD_CONFIG}.bak.$(date +%F-%H%M%S)

# 更新配置项
sed -i "s/^#\?Port .*/Port ${SSH_PORT}/" $SSHD_CONFIG
sed -i "s/^#\?PasswordAuthentication .*/PasswordAuthentication no/" $SSHD_CONFIG
sed -i "s/^#\?PermitRootLogin .*/PermitRootLogin prohibit-password/" $SSHD_CONFIG
sed -i "s/^#\?PubkeyAuthentication .*/PubkeyAuthentication yes/" $SSHD_CONFIG

# 若配置文件中未包含Port行,则添加
grep -q "^Port ${SSH_PORT}" $SSHD_CONFIG || echo "Port ${SSH_PORT}" >> $SSHD_CONFIG

# ⑤ 开放新端口(以Ubuntu为例)
if command -v ufw >/dev/null 2>&1; then
  ufw allow ${SSH_PORT}/tcp
  ufw reload
elif command -v firewall-cmd >/dev/null 2>&1; then
  firewall-cmd --permanent --add-port=${SSH_PORT}/tcp
  firewall-cmd --reload
fi

# ⑥ 重启SSH服务
systemctl restart ssh || systemctl restart sshd

# ⑦ 显示提示信息
echo "✅ SSH配置完成!"
echo "🚪 新端口: ${SSH_PORT}"
echo "🔑 仅密钥可登录"
echo "⚠️ 请新开终端测试: ssh -p ${SSH_PORT} root@你的VPS_IP"