检测 SSH 端口是否异常,可以从 端口是否开放、服务是否正常、连接是否异常、是否被攻击 等多个层面来判断。下面给你一套从基础到进阶的检测方法,适用于 Linux 服务器。
—
## 一、基础检测:SSH 端口是否存活
### 1️⃣ 查看 SSH 服务是否运行bash<br>systemctl status sshd<br>
或(部分系统)bash<br>service ssh status<br>
✅ 正常状态:<br>Active: active (running)<br>
—
### 2️⃣ 查看 SSH 监听端口bash<br>ss -lntp | grep ssh<br>
或bash<br>netstat -lntp | grep ssh<br>
示例输出:<br>LISTEN 0 128 0.0.0.0:22<br>
✅ 说明 SSH 正在监听
❌ 没有输出 → SSH 未启动或端口被改
—
### 3️⃣ 本地测试 SSH 端口bash<br>ssh localhost<br>
或指定端口:bash<br>ssh -p 22 localhost<br>
—
## 二、网络层检测:端口是否可达
### 4️⃣ 使用 telnet / nc 测试端口bash<br>telnet 127.0.0.1 22<br>
或bash<br>nc -vz 127.0.0.1 22<br>
✅ 正常:<br>Connected to 127.0.0.1.<br>
❌ 异常:<br>Connection refused<br>Connection timed out<br>
—
### 5️⃣ 从外部检测(⚠️ 注意安全)bash<br>nmap -p 22 服务器IP<br>
示例:bash<br>nmap -p 22 8.8.8.8<br>
—
## 三、SSH 配置异常检测
### 6️⃣ 检查 SSH 配置文件bash<br>vim /etc/ssh/sshd_config<br>
重点检查:ini<br>Port 22<br>PermitRootLogin<br>PasswordAuthentication<br>AllowUsers<br>ListenAddress<br>
修改后重启:bash<br>systemctl restart sshd<br>
—
## 四、异常行为检测(是否被攻击)
### 7️⃣ 查看 SSH 登录日志bash<br>journalctl -u sshd -n 50<br>
或bash<br>/var/log/secure # CentOS/RHEL<br>/var/log/auth.log # Ubuntu/Debian<br>
⚠️ 异常特征:
- 大量 Failed password
- 来自陌生 IP
- root 被暴力破解
—
### 8️⃣ 统计失败登录次数bash<br>grep "Failed password" /var/log/secure | wc -l<br>
查看攻击来源:bash<br>grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr<br>
—
## 五、端口被占用 / 劫持检测
### 9️⃣ 查看端口是否被非 SSH 占用bash<br>ss -lntp | grep :22<br>
如果看到:<br>users:(("xxx",pid=1234,fd=3))<br>
确认该进程是否为 sshd。
—
## 六、防护与加固建议(强烈推荐)
✅ 修改默认端口ini<br>Port 22222<br>
✅ 禁用 root 登录ini<br>PermitRootLogin no<br>
✅ 使用密钥登录ini<br>PasswordAuthentication no<br>
✅ 安装 fail2banbash<br>yum install fail2ban -y<br>systemctl enable fail2ban<br>
✅ 使用防火墙限制 IPbash<br>firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" port port="22" protocol="tcp" accept'<br>
—
## 七、快速自检清单 ✅
| 检查项 | 命令 |
|------|------|
| SSH 是否运行 | systemctl status sshd |
| 端口是否监听 | ss -lntp |
| 本地是否可连 | ssh localhost |
| 是否有暴力破解 | grep Failed /var/log/secure |
| 是否被改端口 | ss -lntp \| grep ssh |
—
如果你愿意,可以把 具体异常现象(如连不上、登录慢、CPU 飙高、日志报错)发给我,我可以帮你精准判断是 端口问题 / 配置问题 / 被攻击。