首页 guides SSH 服务加固清单:从端口到密钥的服务器安全配置

SSH 服务加固清单:从端口到密钥的服务器安全配置

SSH 是绝大多数服务器管理员每天都要用到的远程管理通道,但也是被暴力破解攻击盯得最紧的入口之一。根据安全厂商的统计,暴露在公网上的默认 22 端口,一天之内就可能收到数千次来自不同 IP 的密码尝试。如果你还在用默认端口、纯密码登录,服务器被攻破只是时间问题。这篇指南会带你走一遍完整的 SSH 服务加固流程,从修改端口、限制登录来源,到切换密钥认证、配置 fail2ban,每一步都给出可以直接执行的命令,帮你把远程管理入口的安全水位提上来。

为什么 SSH 是攻击者的首要目标

SSH 服务一旦暴露在公网,就等于把服务器的大门钥匙放在门口。攻击者会用自动化脚本扫描全网 IP,凡是 22 端口开放的机器都会进入字典爆破队列。这类攻击不需要针对你,纯粹是广撒网:只要密码够弱、root 直接允许登录,脚本就能在几小时内撞开。

这里要区分两个概念:密码认证(password authentication)靠的是你设置的字符串,只要够短、够常见,就容易被字典命中;密钥认证(key authentication)靠的是一对非对称密钥,私钥留在本地,公钥放在服务器上,攻击者即使拿到公钥也无法反推出私钥。把登录方式从密码切到密钥,是加固里收益最高的一步。

密码认证与密钥认证对比示意图

加固前先确认你的服务器环境

动手之前,先确认三件事:你用的是哪套系统(Debian/Ubuntu 还是 CentOS/RHEL),是否已经能通过控制台或面板登录,以及有没有保留一个备用登录通道。加固过程中一旦配置写错,可能把自己锁在门外,所以建议先开一个能用的备用会话,或者确认主机商的控制台 VNC 可用。

如果你用的是云服务器(云端虚拟化出来的计算资源)或 VPS(虚拟专用服务器),建议先确认主机商是否提供一键重置 root 密码或控制台登录能力,这能作为最后的兜底。关于服务器选型,可以参考我们之前整理的 香港云主机VPS与独立服务器对比,里面覆盖了不同业务规模下如何选择合适配置。

第一步:修改默认端口并限制登录来源

把 SSH 从默认的 22 端口改到高位端口,能直接过滤掉大量只扫 22 端口的自动化脚本。虽然这不是真正的安全手段(攻击者仍可能全端口扫描),但能显著降低日志里的噪音。

编辑 /etc/ssh/sshd_config,找到 #Port 22 这一行,改成:

Port 2222

改完后重启服务:

systemctl restart sshd

重启前务必确认防火墙放行了新端口,否则会立刻断连。更稳妥的做法是同时限制来源 IP,在防火墙里只允许你办公网络的 IP 段访问 SSH 端口。如果你的办公 IP 不固定,可以配合动态域名或 VPN 方案,把 SSH 入口收敛到可控范围。

第二步:用密钥认证替代密码登录

这是整个加固流程的核心。先在本地生成密钥对:

ssh-keygen -t ed25519 -C "your_email@example.com"

然后把公钥复制到服务器:

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@server_ip

确认密钥能正常登录后,再回到 sshd_config 关闭密码登录:

PasswordAuthentication no
PermitRootLogin prohibit-password

PermitRootLogin prohibit-password 表示禁止 root 用密码登录,但允许用密钥登录,这样既保留了 root 的便利,又堵住了密码爆破。改完重启 sshd,再用新端口和密钥测试一次,确认能登录再断开旧会话。

第三步:关闭不必要的服务与权限

SSH 加固不只是改 sshd 配置,还要清理服务器上不必要的开放端口和账号。先用 ss 查看当前监听端口:

ss -tlnp

凡是你不认识的服务,先确认它是什么,再决定是否停用。同时检查系统里是否有长期不用的账号,尤其是带 sudo 权限的,建议直接删除或禁用。关于账号和权限的更多细节,可以看看 使用美国虚拟主机对网站安全的影响,了解不同部署形态下权限管理的侧重点。

第四步:配置防火墙与 fail2ban

防火墙负责把 SSH 端口收敛到可信来源,fail2ban 则负责在检测到连续失败尝试时自动封禁来源 IP。以 UFW 为例:

ufw allow 2222/tcp
ufw enable

安装并配置 fail2ban:

apt install fail2ban

默认配置会监控 sshd 日志,连续 5 次失败后封禁来源 IP 10 分钟。你可以根据实际日志调整 maxretrybantime。这套组合能有效压制暴力破解,同时不影响正常登录。

这里有一个容易被忽略的细节:fail2ban 的封禁是基于来源 IP 的,如果你的办公网络出口 IP 会变化,或者有同事从不同网络登录,建议把可信 IP 段加入 ignoreip 白名单,避免误封导致无法登录。同时,bantime 不要设得太短,否则攻击脚本可以反复重试;也不要设得太长,否则误封后要等很久才能恢复。一般建议 bantime 设为 1 小时、maxretry 设为 5 次,再根据实际日志微调。

fail2ban 自动封禁暴力破解来源示意图

加固后的验证与日常检查

配置完成后,用新端口、密钥方式登录一次,确认一切正常。日常建议定期查看认证日志:

journalctl -u sshd --since "24 hours ago"

如果发现大量来自陌生 IP 的失败尝试,说明你的服务器仍在被扫描,可以进一步收紧防火墙规则。另外,建议把 sshd 的日志级别从默认的 INFO 调到 VERBOSE,这样能记录更多连接细节,方便排查异常。关于网站整体性能与安全的联动优化,可以参考 如何在国内快速稳定地访问美国虚拟主机,把安全与性能放在一起规划。

总结与下一步行动

SSH 服务加固并不复杂,核心就四件事:改端口、切密钥、关密码、加防护。建议你按这份清单逐项执行,每改一步都先验证再继续,避免把自己锁在门外。如果你需要一台开箱即用、支持控制台兜底的服务器,可以考虑 Hostease 的 VPS 主机或独立服务器,它们都提供控制台登录能力,方便你在加固过程中随时兜底。先把密钥认证配好,再逐步收紧其他项,你的服务器安全水位就能明显提升。

本文来自网络,不代表WHT中文站立场,转载请注明出处。https://hostease.webhostingtalk.cn/guides/ssh-server-hardening-checklist/

作者: wht-he-admin

下一篇
SSH 服务加固清单:从端口到密钥的服务器安全配置 封面配图

已经没有了

返回顶部