云计算百科
云计算领域专业知识百科平台

Ubuntu 服务器安全加固:配置 SSH 密钥登录并禁止密码爆破

服务器遭受内网SSH暴力破解


【保姆级教程】Ubuntu 服务器安全加固:配置 SSH 密钥登录并禁止密码爆破

背景

最近查看服务器日志(/var/log/auth.log),发现大量 Invalid user 和 Failed password 的记录。这说明服务器正在遭受 SSH 暴力破解攻击。
在这里插入图片描述

为了彻底解决这个问题,最稳妥的方案是:启用 SSH 密钥登录,并完全禁用密码登录。这样攻击者就算试一万年密码也没用,因为服务器根本不接受密码验证。


核心原理

  • 公钥 (Public Key):相当于“锁头”,放在服务器上 (~/.ssh/authorized_keys)。
  • 私钥 (Private Key):相当于“钥匙”,必须严格保存在你的客户端电脑里(Windows/Mac),绝对不能泄露。

第一步:在客户端生成密钥

无论你是 Windows 还是 Mac,步骤基本一致。

  • 打开终端(Windows 用 PowerShell/CMD,Mac 用 Terminal)。
  • 输入生成命令:ssh-keygen -t rsa -b 4096
  • 一路回车即可。
    • 如果提示设置 passphrase(密钥密码),为了实现免密登录,建议直接留空回车。
      结果:你的密钥会生成在用户目录的 .ssh 文件夹下:

    • id_rsa:私钥(机密!千万别发给别人,也别上传到服务器)

    • id_rsa.pub:公钥(这个是我们要用到服务器上的)


    第二步:将公钥上传到服务器

    方法 A:Windows 用户(手动添加)

    Windows 默认没有上传工具,建议手动操作,确保不出错。

    # 1. 创建目录(如果不存在)
    mkdir -p ~/.ssh

    # 2. 编辑认证文件
    nano ~/.ssh/authorized_keys

    方法 B:Mac / Linux 用户(命令一键上传)

    在 Mac 终端里直接运行:

    ssh-copy-id 用户名@服务器IP

    输入一次服务器密码,公钥就自动部署好了。


    第三步:测试密钥登录

    ⚠️ 高能预警:在这一步测试成功前,千万不要关闭你当前的 SSH 窗口!

  • 新开一个终端窗口。
  • 输入登录命令:ssh 用户名@服务器IP
  • 观察结果:
    • 如果直接进入系统,或者不再提示输入 password,说明配置成功!🎉
    • 如果依然提示输入密码,请检查第二步的权限设置。

    第四步:彻底禁止密码登录(关门打狗)

    确认密钥可以用之后,就可以把密码登录这个“漏洞百出”的大门焊死了。

    sudo nano /etc/ssh/sshd_config

    1.找到(或添加)以下配置项,并修改为:

    # 禁用密码验证 (最关键的一步)
    PasswordAuthentication no

    # 启用公钥验证 (默认通常是 yes,确认一下)
    PubkeyAuthentication yes

    # 禁用质询响应 (可选,建议关闭)
    ChallengeResponseAuthentication no

    Ubuntu 特别注意:如果你在文件中看到 Include /etc/ssh/sshd_config.d/*.conf 这一行,请确保该目录下的文件没有覆盖你的设置。通常直接改主文件这就够了,但如果重启后不生效,可能需要检查那个目录。

    2.保存并退出 (Ctrl+O, Enter, Ctrl+X)。

    #重启 SSH 服务让配置生效:
    sudo systemctl restart ssh


    进阶技巧:多设备管理与别名配置

    1. 如何添加新设备(如 iPad 或 另一台电脑)?

    既然密码登录关了,新设备怎么连?

    • 逻辑:用已经有权限的老设备,帮新设备“开门”。
    • 操作:
    • 在新设备生成密钥 (ssh-keygen)。
    • 把新设备的公钥 (id_rsa.pub) 发送给老设备。
    • 在老设备上,把这行公钥追加粘贴到服务器的 ~/.ssh/authorized_keys 文件中(另起一行)。
    • 此时新设备也拥有了访问权限。

    2. 配置 SSH Alias(偷懒神器)

    不想每次都输 IP 地址?配置一下客户端的 SSH Config。
    在客户端(Windows/Mac)的 ~/.ssh/config 文件中写入:

    Host mylab # 你起的别名
    HostName 10.109.xx.xx # 服务器 IP
    User bupt_student # 用户名
    IdentityFile ~/.ssh/id_rsa

    以后只需要输入 ssh mylab 即可秒连服务器,VSCode 的 Remote SSH 也会自动识别这个别名。


    附:紧急补救措施

    万一配置失误,所有设备都连不上了怎么办?

  • 物理接触:如果服务器在身边,直接接显示器和键盘,本地登录不受 SSH 配置限制。
  • 云控制台:如果是阿里云/腾讯云,使用网页版的 VNC / 远程连接 功能,这相当于物理连接,可以用密码登录进去修复配置。

  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » Ubuntu 服务器安全加固:配置 SSH 密钥登录并禁止密码爆破
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!