VPS频繁断连致SSH连接被拒绝、网站访问超时,如何排查解决?
故障根因初步判断
从你提供的syslog可以看到,故障时段最后一条正常日志是08:27:08的UFW拦截记录,下一条直接是08:49:48的内核启动日志,说明故障期间系统完全崩溃停止运行,日志断档、网站连接超时、SSH连接拒绝都是系统崩溃的直接表现,必须重启才能恢复的特征也完全吻合这一判断。
SSH暴力扫描影响说明
你日志中出现的大量pi、user等无效用户的SSH登录尝试是全网普遍存在的自动化暴力扫描行为:
- 正常低频扫描不会造成用户信息泄露,也不会影响服务运行
- 当扫描频次过高时,会占用大量系统连接资源、拉高sshd进程的CPU/内存占用,严重时会触发系统内存耗尽(OOM)、进程假死甚至系统崩溃,和你当前的故障表现高度吻合
故障排查步骤
- 确认OOM崩溃记录:重启后执行命令
grep -i 'oom-kill' /var/log/syslog,如果返回相关记录即可确认是内存耗尽导致的系统崩溃 - 统计扫描请求量级:执行命令
grep "Invalid user" /var/log/auth.log | awk '{print $10}' | sort | uniq -c | sort -nr,统计单IP的登录失败请求频次,单IP每小时请求超过100次即可判定为高频暴力攻击 - 回溯历史资源占用:先安装系统资源统计工具
apt install sysstat,后续可通过sar -r查看历史内存占用、sar -n DEV查看历史网络流量,定位崩溃前的系统资源峰值
可行解决方案
1. 拦截SSH暴力扫描
- 修改SSH默认端口:编辑
/etc/ssh/sshd_config配置文件,将默认的Port 22修改为10000~65535之间的未占用端口,修改完成后执行systemctl restart sshd生效,后续SSH连接需要指定新端口 - 禁用密码登录改用密钥登录:先在本地生成SSH密钥对,将公钥写入服务器
~/.ssh/authorized_keys文件,确认密钥可正常登录后,编辑sshd_config将PasswordAuthentication参数改为no,重启sshd服务,从根源阻断密码爆破尝试 - 安装fail2ban自动拦截攻击IP:执行
apt install fail2ban,默认配置即可自动封禁短时间内多次登录失败的IP,默认封停时长10分钟,可大幅降低扫描带来的资源消耗
2. 系统稳定性优化
- 调整核心服务OOM优先级:给Apache、sshd等核心服务配置更低的OOM得分,避免系统内存不足时优先杀掉核心业务进程
- 配置本地存活检测:安装看门狗服务
watchdog,配置端口存活、系统负载检测规则,系统无响应时自动触发重启,减少业务中断时长 - 排查底层硬件故障:完成上述优化后如果故障仍频繁发生,联系服务器提供商提交工单,要求排查宿主机是否存在超售、硬件故障、网络波动等底层问题
3. 临时应急方案
可先在服务器提供商后台配置自动重启触发规则,当实例无法ping通、端口不通时自动触发重启,先降低业务中断的影响,再逐步排查根因。
内容的提问来源于stack exchange,提问作者tealy
相关产品推荐
相关产品推荐

