Linux安全加固:¶
一键锁死 SSH 爆破¶
在云计算时代,只要你的云服务器拥有公网 IP,它就会在几分钟内沦为全球黑客暴力破解的目标。如果你去查看系统日志(Ubuntu 下通常是 /var/log/auth.log),你会发现每天都有成千上万次来自陌生 IP 的密码尝试。
如果服务器继续允许 root 用户通过“账号+密码”远程登录,无异于给黑客留了一道隐形的旋转门。本文将介绍 Linux 服务器运维中公认的黄金安全法则:全面禁止密码登录、彻底禁用 root 远程连接,并全员切换至 SSH 密钥认证。通过这套标准配置,可将针对 SSH 端口的爆破风险直接降低至零。
一、 核心目的与安全意义¶
- 免疫暴力破解:传统的复杂密码在面对现代分布式字典爆破时仍有被攻破的概率,而 SSH 密钥(通常为 4096 位 RSA)在数学层面上让暴力破解变得完全不可能。
- 收敛攻击面(隐藏 root 目标):黑客自动化脚本的攻击首选目标必然是
root账号。禁用root远程登录后,黑客在不知道任何普通账号名称的前提下,连尝试的机会都没有。 - 权限隔离与权责分明:在团队协同、小组成员或多用户共享服务器时,全员使用独立的普通账号并通过各自的私钥登录,既能有效隔离工作空间,又能在系统日志中精准溯源。
💡 核心架构逻辑:日常运维中,用户先使用本地私钥登录属于自己的普通账号(如
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 账号身份登录服务器,执行以下操作:
- 创建新用户(以
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 文件即可。
本站总访问量 次