如何设置VPS密钥验证?4步轻松告别密码安全隐患

如何设置VPS密钥验证,让服务器告别传统密码登录的安全隐患?这个问题在我最近整理VPS服务器安全策略时特别关注。

说来惭愧,我已经有段时间没有更新博客了。这段时间我一直在忙着处理我所有VPS服务器的安全问题,特别是登录验证方式的优化。

其实关于服务器安全问题,我很早就有所了解。但就像很多人一样,我之前一直停留在”更换SSH端口+设置复杂密码”的基础防护阶段。直到最近我的一台服务器出现安全告警,这让我意识到仅仅依靠密码登录始终存在风险。现在,我已经将所有VPS全部升级到更安全的密钥验证方式,这也是我想和大家分享的重要经验。

为什么必选密钥验证?

作为一个运营多台VPS的站长,我深知服务器安全的重要性。密钥验证实际上是一种基于非对称加密的身份验证方式,它的工作原理与我们熟悉的HTTPS非常相似 – 都使用了公钥和私钥这样的密钥对来确保安全。就像HTTPS保护我们的网页浏览安全一样,密钥验证保护着我们的服务器登录安全。

具体来说,VPS密钥验证的工作原理是:

  • 公钥:存储在VPS服务器上,用于加密数据
  • 私钥:存储在你的本地电脑上,用于解密数据
  • 验证过程:服务器用公钥加密随机字符串,只有持有对应私钥的用户才能解密

与传统密码登录相比,密钥验证具有以下优势:

  1. 更高的安全性
    • 完全避免密码在网络中传输
    • 私钥永远不会离开本地设备
    • 暴力破解几乎不可能实现
  2. 便捷的使用体验
    • 无需记忆复杂密码
    • 支持多设备同时使用
    • 一次配置,终身受用
  3. 专业的管理方式
    • 可以随时吊销特定密钥
    • 支持密钥到期设置
    • 便于团队协作管理

说到密码登录的风险,这里分享一些真实数据:

  • 我的服务器每天平均遭受500+次暴力破解尝试
  • 超过90%的攻击来自自动化破解脚本
  • 即使是12位的复杂密码也并非100%安全

正是因为经历过这些安全威胁,我才下定决心全面升级到密钥验证。接下来,让我带大家一步步完成这个重要的安全升级过程。

VPS密钥验证配置教程

在开始具体操作之前,我们先准备好所需的工具,可以阅读我写的文章《2024 年连接服务器的工具最佳的 5 款 SSH 工具推荐》查看工具推荐:

  • Windows用户:需下载并安装PuTTY
  • Linux/Mac用户:直接使用终端即可
  • 所有用户:确保能通过密码方式登录你的VPS

具体配置步骤分为三大部分:

1、生成SSH密钥对

PuTTY生成SSH密钥对
PuTTY生成SSH密钥对
  • Windows用户:
    • 打开PuTTYgen(下载安装PuTTY后在安装目录会同步安装PuTTYgen)
    • 选择RSA,密钥长度建议4096位
    • 点击”Generate”生成密钥对
    • 保存私钥文件到安全位置
  • Linux/Mac用户:
    • 建议使用默认保存路径:~/.ssh/id_rsa
    • 密码短语可以留空(直接回车)
ssh-keygen -t rsa -b 4096

2、上传公钥到VPS

上传公钥到VPS
上传公钥到VPS
  • Windows用户:
    • 复制PuTTYgen界面中的公钥文本
    • 通过SSH连接到VPS
    • 将公钥添加到~/.ssh/authorized_keys文件中
  • Linux/Mac用户:
    • 输入一次密码即可完成上传
ssh-copy-id username@your-vps-ip

3、测试密钥登录

VPS密钥验证成功
VPS密钥验证成功
  • Windows用户:
    • 在PuTTY中选择”Connection” => “SSH” => “Auth” => “Credentials”配置私钥路径
    • 尝试连接VPS,确认免密登录
  • Linux/Mac用户:
    • 确认可以直接登录成功
ssh username@your-vps-ip

重要提示:

  • 测试成功后再禁用密码登录
  • 请务必备份好私钥文件
  • 建议保存一份VPS控制面板的密码以备急用

配置过程很简单对吧?下一节我们将继续深入讨论如何禁用密码登录,以及一些进阶的安全配置建议。

VPS密钥验证后的安全配置建议

完成密钥验证的基础配置后,我建议你跟随我的步骤进行进一步的安全加固。这些步骤我在自己的所有VPS上都实施过,能够显著提升服务器的安全性。

  1. 禁用密码登录
# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config

# 修改或添加以下配置
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

# 重启SSH服务
sudo systemctl restart sshd

⚠️ 重要提示:执行这步之前,请确保:

  • 已经成功测试过密钥登录
  • 已经备份好私钥文件
  • 最好保留一个新的SSH会话窗口
  1. 修改SSH默认端口
    我建议将默认的22端口改为其他端口号(建议使用10000-65535之间的端口):
# 在SSH配置文件中添加或修改
Port 28999  # 这里的端口号仅作示例

# 如果使用了防火墙,记得开放新端口
sudo ufw allow 28999/tcp  # Ubuntu系统示例
sudo firewall-cmd --permanent --add-port=28999/tcp  # CentOS系统示例
  1. 配置基础防火墙规则
    以Ubuntu系统为例:
# 安装并启用UFW
sudo apt install ufw
sudo ufw enable

# 设置基本规则
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 28999/tcp  # SSH端口
sudo ufw allow 80/tcp     # Web服务
sudo ufw allow 443/tcp    # HTTPS服务
  1. 设置登录失败处理
    我推荐使用Fail2ban来自动处理登录失败:
# 安装Fail2ban
sudo apt install fail2ban

# 创建自定义配置
sudo nano /etc/fail2ban/jail.local

[sshd]
enabled = true
port = 28999  # 改为你的SSH端口
bantime = 3600
findtime = 600
maxretry = 3

最后分享几个我的使用建议:

  1. 密钥管理小技巧
  • 为不同的VPS使用不同的密钥对
  • 定期更换密钥,建议半年一次
  • 使用密钥管理工具如KeyChain来管理多个密钥
  1. 定期安全检查
  • 每周检查一次SSH日志
  • 定期更新系统和软件包
  • 监控异常的登录尝试
  1. 备份建议
  • 将私钥备份到安全的离线设备
  • 使用加密软件保护私钥文件
  • 记录每个密钥对应的服务器信息

通过以上这些配置,我的VPS服务器安全性得到了显著提升。自从实施这些措施以来,我再也没有收到过任何安全警报,这让我能够更专注于业务本身的发展。

结语

通过这篇文章,我详细介绍了密钥验证的原理、配置步骤和进阶安全设置。从我的使用经验来看,切换到密钥验证确实是一个非常明智的选择。它不仅提供了更高的安全性,还能带来更便捷的使用体验。

如果你正在寻找可靠的VPS服务器,欢迎访问我们的VPS推荐栏目,这里有我亲自测试和使用过的各类VPS产品,能帮你选择到最适合的服务器。

同时,如果你想了解更多VPS使用技巧和安全防护措施,别忘了查看我们的VPS教程专栏,里面收录了大量实用的教程和经验分享。

最后,如果你在配置过程中遇到任何问题,欢迎在下方评论区留言,我会及时回复并提供帮助。毕竟,一个安全的VPS环境,是我们一起努力的目标。

发表评论