安全配置 SSH 密钥登录,修改默认端口,关闭密码登录,提升服务器安全性
生成 SSH 密钥
1、 打开 PowerShell,以管理员身份打开 Windows PowerShell:
2、 使用以下命令生成 SSH 密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"如果 VPS 较老不支持 ed25519,使用 RSA 算法:
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、 设置密钥的密码(可选,可直接留空):
设置密码会增加安全性,但每次使用密钥时都需要输入密码。如果追求便利性,可以留空。
5、 密钥生成完成后,会在指定目录创建两个文件:
- 私钥文件 : id_ed25519
- 公钥文件 : id_ed25519.pub
需要公钥文件上传到 VPS 服务器
一键配置脚本
在 VPS 上执行以下完整配置脚本:
SSH_PORT=25701
mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat > ~/.ssh/authorized_keys <<'EOF'
你的 id_ed25519.pub 公钥内容粘贴在这里
EOF
chmod 600 ~/.ssh/authorized_keys
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
grep -q "^Port ${SSH_PORT}" $SSHD_CONFIG || echo "Port ${SSH_PORT}" >> $SSHD_CONFIG
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
systemctl restart ssh || systemctl restart sshd重要提示::
在执行脚本前,请务必将 你的 id_ed25519.pub 公钥内容粘贴在这里 替换为您的实际公钥内容。
配置完成后,使用以下命令测试连接:
ssh -p 25701 root@你的VPS_IP其它:
简化连接配置,为了更方便地连接,可以在本地创建 SSH 配置文件:
nano ~/.ssh/config添加以下内容:
Host myserver
HostName 你的VPS_IP
Port 25701
User root
IdentityFile ~/.ssh/id_ed25519配置完成后,可以使用简化的命令连接:
ssh myserver