一键脚本:配置 SSH 密钥登录 + 修改端口 + 关闭密码登录
使用 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_IP2️⃣ 在 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"