SSH 安全

SSH 是服务器的正门,绝大多数入侵都从这里开始。宝塔把 SSH 相关的设置做成了可视化页面,不用再去手敲 sshd_config。这一篇按"先看现状、再改配置、最后加防护"的顺序说。

先看现状:SSH 登录详情

进入「安全 → SSH 管理」,第一眼先看 SSH 开关和登录统计。

SSH开关

页面会展示登录的成功和失败次数,格式类似"成功:114514 / 失败:1919810"。这两个数字本身就是一台"攻击晴雨表":

  • 失败次数远大于成功次数:很正常,公网上的扫描器日夜都在试密码。
  • 失败次数突然暴涨:说明你正在被针对性暴力破解,赶紧开防爆破。
  • 出现不熟悉的成功登录:危险信号,立刻改密码、改端口、查日志。

点击"成功"或"失败"按钮,可以直接查看对应的登录日志。

SSH登录详情

基础设置:改端口、限制 root

基础设置

SSH 端口:默认是 22,建议改成 10000-65535 的高位端口(比如 21111)。修改前必须确认两件事:新端口没被别的服务占用,以及防火墙和云安全组都已经放行新端口。确认端口占用可以用这条命令:

netstat -tunlp | grep 21111

没输出说明端口空闲,可以放心改。

root 登录设置:默认是"yes - 可密码和密钥登录",一共四个选项:

选项 含义 适用场景
yes - 可密码和密钥登录 两种方式都行(默认) 图省事,但安全性最低
without-password - 只能密钥登录 只认密钥,密码无效 推荐,彻底杜绝暴力破解
no - 禁止登录 root 谁也不让登 最安全,但需要先用普通用户登录再 su
forced-commands-only - 只能执行命令 只能跑指定命令,拿不到交互式 shell 只给特定脚本用

SSH 密码登录 / SSH 密钥登录:密码登录默认开启,密钥登录默认关闭。推荐的做法是开启密钥登录,然后关掉密码登录。开启密钥登录后点击"下载"把密钥保存到本地,这串文件相当于你家大门钥匙,丢了等于密码泄露。

密码策略:让密码难以被猜

在「安全 → 服务器安全配置」里有两项关于密码本身的设置:

服务器安全配置

  • 密码复杂度:用分数表示,1/4 到 4/4。4/4 表示必须同时包含数字、大写字母、小写字母、特殊字符。建议至少 3/4。
  • 密码长度限制:设置最小位数,默认推荐 8 位起步,重要服务器建议 16 位以上。

设置方法:切换到对应开关,输入要求后点击【设置】。这两项是"防君子也防小人"——既防止用户图省事设 123456,也直接抬高暴力破解的成本。

防护:防爆破与登录告警

SSH 防爆破:开启后自动监控并拦截异常登录尝试。原理是限制失败次数,超过阈值就封禁来源 IP。这是公网服务器的标配,没什么理由不开。

SSH 登录告警:开启后,一旦有 SSH 登录行为就推送告警通知。配置时切换到"配置告警",设置告警方式(邮件、微信等)、发送间隔和发送上限。

注意:告警功能依赖消息通道。如果没提前配好通道,告警消息是发不出去的,等于白开。通道配置方法见 服务器监控与告警通知。

密码登录 vs 密钥登录

对比项 密码登录 密钥登录
认证依据 记住一串复杂密码 一个本地密钥文件
暴力破解 有被穷举的风险 不存在,密钥长度远超密码
多机管理 每台都要记一套密码 一把钥匙开一批机器,适合批量运维
丢失风险 忘了可以重置 密钥文件丢了要重新生成并分发

结论很明确:机器一多,密钥登录既是安全选择,也是省心选择。个人服务器至少做到"仅允许 root 密钥登录",把密码这条路堵死。

企业版扩展:账号管理与登录日志

SSH 管理里还有两个标签页:

  • SSH 系统账号管理:企业版专享。可以创建/删除系统用户、重置密码、开启防入侵和日志记录,还能查看每个账号的详细命令日志。适合需要给多人分配服务器账号、并且要留痕审计的团队。点击"创建系统用户",输入用户名和密码即可添加。

SSH账号管理

  • SSH 登录日志:企业版专享。记录所有 SSH 登录的来源 IP、时间、端口、状态和用户,是事后溯源的主力工具。

SSH登录详情

操作注意事项

  1. 修改 SSH 端口前,务必先检查端口占用情况并在防火墙放行,避免改完连不上。
  2. 调整 root 登录方式和密码/密钥登录状态时要谨慎,确认手头有其他可用的登录方式(如面板的 Web 终端),避免把自己锁在外面。
  3. 服务器时间要和网络时间一致,否则动态口令类的验证会失败。
  4. 修改前先备份现有配置,改完立即测试,别等出问题才发现改错了。