上一篇
如何检查Linux SSH端口占用?
- Linux
- 2025-06-12
- 3986
使用
netstat -tuln | grep ':22'
或
ss -tuln | grep ':22'
命令查看22端口(默认SSH端口)的占用状态,若端口处于”LISTEN”状态,表示SSH服务正在运行。
如何查看 Linux SSH 端口占用
在 Linux 系统中,SSH 服务默认使用 22 端口,但实际环境中,端口可能被修改或占用,以下是四种专业方法,帮助您快速检查 SSH 端口占用情况:
方法 1:使用 ss
命令(推荐)
ss
是 netstat
的现代替代工具,效率更高,执行以下命令:
sudo ss -tulpn | grep -E ':(22|SSH_PORT)'
- 参数说明:
-t
:查看 TCP 连接-u
:查看 UDP 连接-l
:仅显示监听端口-p
:显示进程信息-n
:禁用域名解析(显示数字端口)
- 输出示例:
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=1234,fd=3))
关键信息:
22
端口被sshd
进程占用(PID=1234)。
方法 2:使用 netstat
命令(传统方式)
若系统未安装 ss
,可使用 netstat
:
sudo netstat -tulnp | grep -E ':(22|SSH_PORT)'
- 输出示例:
tcp6 0 0 :::22 :::* LISTEN 1234/sshd
可见
22
端口由sshd
(PID=1234)监听。
方法 3:使用 lsof
命令(检查进程详情)
通过进程名直接定位:
sudo lsof -i :22 -s TCP:LISTEN
- 输出示例:
sshd 1234 root 3u IPv4 2876543 0t0 TCP *:ssh (LISTEN)
明确显示
sshd
正在监听22
端口(IPv4)。
方法 4:检查 SSH 配置文件(确认配置端口)
若端口被修改,查看 SSH 服务配置:
sudo grep -i Port /etc/ssh/sshd_config
- 输出示例:
Port 2222 # 若此处自定义了端口,则检查新端口
若输出
Port 2222
,则需检查2222
端口的占用(替换命令中的端口号)。
️ 注意事项
- 权限要求:
- 必须使用
sudo
查看系统级进程(避免遗漏关键信息)。
- 必须使用
- 端口冲突:
- 若端口被其他进程(如 Apache、Nginx)占用,SSH 将无法启动。
- 使用
sudo kill -9 PID
终止冲突进程(谨慎操作)。
- 防火墙干扰:
- 检查防火墙是否放行 SSH 端口:
sudo ufw status | grep 22 # Ubuntu sudo firewall-cmd --list-ports | grep 22 # CentOS
- 检查防火墙是否放行 SSH 端口:
场景 | 推荐命令 |
---|---|
快速检查端口占用 | ss -tulpn | grep :端口号 |
查看进程详细信息 | lsof -i :端口号 |
确认 SSH 配置端口 | grep Port /etc/ssh/sshd_config |
通过以上方法,您可精准定位 SSH 端口占用问题,确保服务正常运行,建议优先使用 ss
命令,兼顾效率与准确性。
引用说明基于 Linux 核心工具手册(
man ss
、man netstat
、man lsof
)及 OpenSSH 官方文档,遵循系统管理最佳实践。