常用服务器端口全解析:基础概念到实用操作
玩服务器、搞建站的朋友,肯定经常跟“端口”打交道。比如远程连接要用22端口,开网站要80/443端口,数据库有3306、6379这些… 端口就像服务器上的“门牌号”,每个“门”对应不同的服务。11评选整理了这份端口指南,从基础概念到常用操作,不管是新手还是老鸟,都能找到有用的内容。
一、先搞懂:端口的核心概念
别被专业术语吓到,其实很简单:
端口:就是个数字(0-65535),用来区分同一台服务器上的不同服务。比如80端口对应网页服务,22端口对应远程连接,互不干扰。
TCP/UDP:这是两种传输协议,同一个端口在TCP和UDP下是独立的。比如“TCP:80”和“UDP:80”是两个不同的“门”,各司其职。
端口分类(IANA标准):
0-1023:系统端口(也叫知名端口),被固定服务占用,比如80(HTTP)、443(HTTPS);
1024-49151:注册端口,需要申请注册,比如常见的8080(HTTP备用);
49152-65535:动态/私有端口,临时用的,比如客户端连接服务器时随机分配的端口。
想查系统里端口对应哪些服务?Linux直接输 cat /etc/services,Windows用 netsh int ipv4 show excludedportrange 就行。
二、必记!生产环境最常用的端口速查表
这些端口天天都可能用到,记不住也没关系,收藏起来随时查:
| 端口 | 协议 | 对应服务 | 说明 |
|---|---|---|---|
| 22 | TCP | SSH | 远程管理服务器的默认端口,Linux/UNIX系统常用 |
| 80 | TCP | HTTP | 明文网页服务,访问网站默认用这个端口 |
| 443 | TCP | HTTPS | 加密网页服务,带SSL/TLS的安全连接,现在网站基本都用这个 |
| 3306 | TCP | MySQL | MySQL数据库的默认端口,建站常用 |
| 5432 | TCP | PostgreSQL | PostgreSQL数据库的默认端口,企业级应用常用 |
| 6379 | TCP | Redis | Redis内存数据库的默认端口,缓存、会话存储常用 |
| 27017 | TCP | MongoDB | MongoDB这个NoSQL数据库的默认端口 |
| 8080 | TCP | HTTP备用 | 开发测试、反向代理常用,比如Tomcat默认用这个 |
| 8443 | TCP | HTTPS备用 | 加密服务的备用端口,当443被占用时用 |
| 3389 | TCP | RDP | Windows远程桌面的默认端口,远程控制Windows服务器用 |
三、怎么看哪个端口被占用了?Linux/Windows实用命令
服务器上端口被占用是常有的事,比如想启动Nginx却提示80端口被占,这时候就得查清楚是谁在用。
Linux系统(推荐用ss,比netstat更高效)
看所有正在监听的端口(TCP和UDP):ss -tuln
具体查80端口被哪个进程占用:ss -tulnp | grep :80(带进程ID和名称)
也可以用lsof:lsof -i:80
如果要强制关掉占用80端口的进程:fuser -k 80/tcp
Windows系统(用PowerShell或命令提示符)
查看监听中的TCP端口及对应进程:Get-NetTCPConnection -State Listen | Select LocalPort, OwningProcess
查80端口的占用情况:netstat -ano | findstr :80(最后一列是进程ID)
强制结束进程(替换1234为实际进程ID):taskkill /PID 1234 /F
四、防火墙怎么开放端口?不同系统操作不同
端口配置好了,防火墙没开放也白搭。分享几个常用系统的快速配置命令:
Ubuntu/Debian系统(用ufw防火墙):sudo ufw allow 22/tcp(开放22端口的TCP连接)
CentOS/RHEL系统(用firewalld):sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --reload(--permanent表示永久生效,reload是重新加载配置)
Windows系统(PowerShell):New-NetFirewallRule -Name "Allow HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow(创建允许80端口入站的规则)
如果是云服务器(阿里云、腾讯云、AWS等),还要在云平台的“安全组”里配置,添加入站规则开放需要的端口(比如80、443、22),不然防火墙开放了也访问不了。
五、端口转发:用SSH穿透内网的小技巧
有时候需要访问内网服务,或者把内网服务暴露到公网,端口转发很好用,用SSH就能实现:
本地端口转发:比如内网有台机器(10.0.0.10)的80端口跑着服务,通过公网服务器(public-server-ip)访问它:ssh -L 8080:10.0.0.10:80 user@public-server-ip,之后访问本地8080端口就等于访问内网10.0.0.10的80端口。
远程端口转发:把本地的3000端口服务(比如开发中的网站)通过公网服务器暴露出去,让别人能访问:ssh -R 8080:localhost:3000 user@public-server-ip,别人访问公网服务器的8080端口,就等于访问你的本地3000端口。
六、Docker容器怎么映射端口?
用Docker跑服务,必须把容器内的端口映射到宿主机,不然外面访问不了。
运行容器时直接映射:docker run -d -p 8080:80 --name web nginx(把容器的80端口映射到宿主机的8080端口,访问宿主机8080就到容器80)
在docker-compose.yml里配置(更适合多服务):
services: web: image: nginx:latest ports: - "8080:80" # 宿主机8080 → 容器80 - "8443:443" # 宿主机8443 → 容器443 restart: unless-stopped
七、端口故障排查:8步搞定大部分问题
端口访问不了?按这8步查,基本能找到原因:
服务启动了吗?比如查Nginx:systemctl status nginx(没启动就启动它:systemctl start nginx)
端口在监听吗?用ss -tuln | grep :端口号,没结果就是没监听
本地防火墙挡了?查防火墙状态,比如ufw:ufw status | grep 端口号,没允许就开放
云安全组没配置?去云控制台的安全组看看,入站规则有没有允许这个端口
SELinux阻止了?CentOS等系统可能有,查一下:getsebool -a | grep httpd(对应服务的布尔值)
端口转发配置错了?查iptables转发规则:iptables -t nat -L -n
网络连通吗?用telnet或curl测试:telnet 服务器IP 端口号 或 curl -v 服务器IP:端口号
容器网络模式问题?Docker容器的话,查网络模式:docker inspect 容器名 | grep Network(比如bridge模式需要端口映射,host模式不用)
八、安全最佳实践:这三条一定要记住
端口配置不当容易出安全问题,记住这三条铁律:
最小权限原则:只开放业务必须的端口。比如一个静态网站,开80和443就行,22端口(远程)也尽量限制来源,其他端口都关掉。
限制来源IP:重要端口(比如22、3306)别全网开放,只允许指定IP访问。比如ufw命令:ufw allow from 192.168.1.0/24 to any port 22(只允许192.168.1.x网段连接22端口)。
定期审计:每周查一次开放的端口,记录下来对比,发现陌生端口及时处理。命令:ss -tuln > ports_$(date +%F).log(每天生成一个日志文件)。
九、一键检测常用端口状态的脚本(Linux)
自己写了个简单脚本,能快速检查常用端口是否开放,新手也能直接用:
#!/bin/bash # 文件名: check-ports.sh echo "端口状态快速检查($(date '+%Y-%m-%d %H:%M:%S'))" echo "----------------------------------------" for port in 22 80 443 3306 5432 6379 27017; do if ss -tuln | grep -q ":$port "; then echo "OPEN $port" else echo "CLOSED $port" fi done
使用方法:把上面的内容保存为check-ports.sh,然后执行 chmod +x check-ports.sh && ./check-ports.sh,就能看到这些常用端口是开放(OPEN)还是关闭(CLOSED)了。
总结:端口管理没那么难,实用为主
其实端口管理不用死记硬背,常用的那几个记住就行,其他的知道怎么查、怎么配置就够了。11评选觉得,重点是做好安全防护,不该开的端口坚决关掉,必要的端口限制好来源,这样服务器才更安全。遇到端口问题按排查步骤一步步来,基本都能解决。收藏这篇,以后用到的时候翻出来看看,肯定能省不少事~