跳转至

Linux安全加固:

一键锁死 SSH 爆破

在云计算时代,只要你的云服务器拥有公网 IP,它就会在几分钟内沦为全球黑客暴力破解的目标。如果你去查看系统日志(Ubuntu 下通常是 /var/log/auth.log),你会发现每天都有成千上万次来自陌生 IP 的密码尝试。

如果服务器继续允许 root 用户通过“账号+密码”远程登录,无异于给黑客留了一道隐形的旋转门。本文将介绍 Linux 服务器运维中公认的黄金安全法则:全面禁止密码登录、彻底禁用 root 远程连接,并全员切换至 SSH 密钥认证。通过这套标准配置,可将针对 SSH 端口的爆破风险直接降低至零。

一、 核心目的与安全意义

  1. 免疫暴力破解:传统的复杂密码在面对现代分布式字典爆破时仍有被攻破的概率,而 SSH 密钥(通常为 4096 位 RSA)在数学层面上让暴力破解变得完全不可能。
  2. 收敛攻击面(隐藏 root 目标):黑客自动化脚本的攻击首选目标必然是 root 账号。禁用 root 远程登录后,黑客在不知道任何普通账号名称的前提下,连尝试的机会都没有。
  3. 权限隔离与权责分明:在团队协同、小组成员或多用户共享服务器时,全员使用独立的普通账号并通过各自的私钥登录,既能有效隔离工作空间,又能在系统日志中精准溯源。

💡 核心架构逻辑:日常运维中,用户先使用本地私钥登录属于自己的普通账号(如 yhfu),需要执行高级系统管理时,再在命令前加 sudo 或通过 sudo su - 切换至超级权限。这一流程是企业级服务器的标准操作规范。


二、 实操步骤指南

步骤 1:在本地电脑生成 SSH 密钥对

密钥对由“私钥”(保存在个人电脑,绝不能泄露)和“公钥”(放到服务器上,用于开锁)组成。Windows 10/11、macOS、Linux 均内置了 OpenSSH 客户端。

打开本地终端(Windows 下使用 CMD 或 PowerShell),执行以下命令:

ssh-keygen -t rsa -b 4096 -C "yhfu_server_key"
  • 交互提示处理
  • 提示 Enter file in which to save the key...:直接按回车,使用默认路径(通常在 ~/.ssh/id_rsa)。
  • 提示 Enter passphrase...:直接按回车(留空),即登录时不需要二次密码确认。

生成成功后,进入本地 .ssh 文件夹(Windows 路径通常为 C:\Users\你的用户名\.ssh\),会看到两个文件:

  • id_rsa:你的**私钥**,必须妥善保管,绝不能给任何人
  • id_rsa.pub:你的**公钥**,用文本编辑器打开它,复制其整行长文本内容。

步骤 2:在 Ubuntu 上创建普通账号并赋予 sudo 权限

root 账号身份登录服务器,执行以下操作:

  1. 创建新用户(以 yhfu 为例)
    adduser yhfu
    

根据系统提示为其设置高强度登录密码,其余“Full Name”等用户信息一路按**回车键**跳过,最后输入 y 确认。 2. 将该账号加入 sudo 组(赋予管理员权限)

usermod -aG sudo yhfu

步骤 3:为新用户配置 SSH 公钥

继续在 root 终端下运行以下命令,将刚才在 Windows 电脑上生成的公钥写入新用户的配置中,并调整 Linux 极其严格的权限限制:

# 1. 创建新用户的 .ssh 隐藏目录
mkdir -p /home/yhfu/.ssh

# 2. 将公钥写入配置文件(请将下方引号内的文本替换为你真实的 id_rsa.pub 内容)
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ..." > /home/yhfu/.ssh/authorized_keys

# 3. 将该目录及文件的所有权变更为 yhfu 用户自身
chown -R yhfu:yhfu /home/yhfu/.ssh

# 4. 设置正确的安全权限(权限错误会导致密钥失效!)
chmod 700 /home/yhfu/.ssh
chmod 600 /home/yhfu/.ssh/authorized_keys

关键验证环节(切勿跳过)

此时千万不要关闭当前的 root 终端会话! 请新开一个本地电脑的终端窗口,尝试使用新账号和密钥登录:ssh yhfu@服务器IP确保能够成功免密进入系统,并且执行 sudo apt update 时输入密码能正确切换。验证成功后,再执行下一步。

步骤 4:修改 SSH 服务配置,彻底锁死安全防线

验证无误后,使用 sudo nano /etc/ssh/sshd_config(或 vi)编辑服务器的 SSH 核心配置文件。寻找并修改以下三个关键参数:

# 1. 禁用 root 用户远程登录
PermitRootLogin no

# 2. 禁用密码认证,强制仅使用密钥登录
PasswordAuthentication no

# 3. 确保开启了公钥认证支持(通常默认即为 yes)
PubkeyAuthentication yes

修改完成后,保存并退出编辑器。执行以下命令重启 SSH 服务以使配置生效:

sudo systemctl restart sshd

三、 常见问题与第三方客户端避坑

1. 团队或小组成员之间如何协同登录?

铁律:绝对不要共享私钥文件。 如果其他小组成员需要登录,应让他们在各自的电脑上生成自己的密钥对,并将他们的“公钥”交给你。你可以为他们创建独立的普通用户(如 tom),或者直接将他们的公钥换行追加到 authorized_keys 文件中。这样不仅安全,而且当某人退出团队时,直接删除对应的那行公钥即可,不影响他人。

2. Windows 客户端(WinSCP / PuTTY)报错提示格式太新?

如果在 Windows 上使用 WinSCP 或老版本 PuTTY 配置密钥登录时,出现 Unable to load key file (PuTTY key format too new) 报错,这是由于新版 WinSCP 默认生成的 .ppk 密钥采用了 PPK v3 格式,而本地老版 PuTTY 只能识别 PPK v2

解决办法:在 WinSCP 的“工具” -> “运行 PuTTYgen”中,点击菜单栏 Key -> Parameters for saving key files...,将 PPK file version 从 3 改为 2,然后重新载入 id_rsa 并保存私钥覆盖原 .ppk 文件即可。

本文阅读量  次
本站总访问量  次
Authors: Wind