在lunix(通常指Linux)服务器上,获得“端口号”最直接的方法是登录后执行 ss -tulnp,老系统用 sudo netstat -tulnp 兜底;它能列出正在监听的端口、协议和对应进程。 结论先说透:服务器本身没有一个固定的“端口号”,你要找的是某个服务监听了哪个端口,以及防火墙、云安全组有没有放行。
Linux查看服务器端口号命令有哪些:先分清“监听端口”和“连接端口”
很多人上来就问“服务器端口号是多少”,这句话在Linux里要拆成两层看,第一层是服务监听端口,比如Nginx监听80、MySQL监听3306,第二层是客户端连接时临时占用的端口,范围通常在49152-65535之间,这类端口没有长期查询意义。
按IANA端口分配惯例,0-1023是知名端口,1024-49151是注册端口,49152-65535是动态或私有端口,你查服务器对外提供什么服务,重点看前两类;你查连接数,才会看到第三类。
Linux查看服务器端口号命令有哪些
本机排查优先用ss,它来自iproute2,现代Linux发行版基本自带,常用命令如下:
- 查看所有TCP/UDP监听端口:
sudo ss -tulnp - 只看TCP监听:
sudo ss -tlnp - 按端口过滤:
sudo ss -tulnp | grep ':80' - 查看所有连接:
sudo ss -tanp - 老系统兼容:
sudo netstat -tulnp - 按进程查端口:
sudo lsof -i -P -n | grep nginx - 查单端口占用:
sudo fuser 80/tcp
命令参数不用死记:-t看TCP,-u看UDP,-l只看监听,-n显示数字端口,-p显示进程,没有sudo时,端口能看见,进程名和PID经常看不见。
| 工具 | 适合场景 | 优点 | 注意点 |
|---|---|---|---|
ss |
新系统日常排查 | 速度快,输出清晰 | 显示进程通常要sudo |
netstat |
老系统、老教程对照 | 字段熟悉 | 部分系统需装net-tools |
lsof |
知道进程名反查端口 | 进程视角方便 | 连接多时输出较长 |
fuser |
单端口被谁占用 | 目标精准 | 信息较少 |
Linux如何查看服务器开放了哪些端口
“开放”不等于“监听”,本机ss看到LISTEN,只说明服务起来了;外部能不能连,还要过防火墙和云安全组,实操顺序如下:
- 登录服务器:
ssh user@服务器IP - 查监听端口:
sudo ss -tulnp - 查本机防火墙:CentOS系用
sudo firewall-cmd --list-ports,Ubuntu系用sudo ufw status verbose - 查iptables规则:
sudo iptables -S - 查云控制台安全组入方向规则
- 从外部验证:
nc -zv 服务器IP 端口
行业共识认为,端口排查要同时看服务监听、系统防火墙、云安全组三层,少看一层,就容易出现“本机正常、外网不通”的情况。
云服务器Linux查看端口占用和进程对比:ss、netstat、lsof怎么选
云服务器和物理机在查端口上没有本质区别,差别主要在安全组和网络边界,你登录实例后,ss -tulnp照样能用;但公网访问还受安全组、弹性公网IP、NAT网关影响。
选工具可以按场景来:
- 新系统、想快速看全局:用
ss -tulnp - 老系统、教程只给netstat:用
sudo netstat -tulnp - 知道Nginx或Java进程,想反查端口:用
sudo lsof -i -P -n | grep 进程名 - 只想解决“80端口被谁占了”:用
sudo fuser 80/tcp - 容器场景:先
docker ps看端口映射,再docker port 容器名
北京云服务器Linux端口号查询场景:远程连不上时先查什么
假设你在北京云服务器上跑MySQL,本地连3306失败,别急着改安全组,按下面顺序查更稳:
- 先看本机是否监听:
sudo ss -tulnp | grep 3306 - 如果没有输出,说明MySQL没启动,或只监听了
0.0.1 - 检查配置:
grep -R "bind-address" /etc/mysql/ - 再看防火墙:
sudo firewall-cmd --list-ports - 然后看云安全组入方向是否放行3306,源IP尽量限制为办公网
- 最后外部验证:
nc -zv 公网IP 3306
北京地域的云服务器如果走内网互通,跨账号、跨VPC时安全组和路由都要看,地域词只影响网络路径和控制台入口,不影响Linux命令本身。
Linux服务器端口号查询收费吗
在服务器里跑ss、netstat、lsof不产生查询费用,这些是系统自带工具,云服务器本身按实例、公网IP、带宽等计费,查端口这个动作通常不单独收费;商业监控、人工代维属于另一类服务,不同厂商账单口径有差异,以控制台账单为准。
实操清单:从登录到确认端口号
你可以把下面这套流程当成固定动作:
- 查服务端口:
sudo ss -tulnp - 查Nginx端口:
sudo ss -tulnp | grep nginx - 查Nginx配置:
grep -R "listen" /etc/nginx/ - 查MySQL端口:
sudo ss -tulnp | grep mysqld - 查Redis端口:
sudo ss -tulnp | grep redis - 查端口对应进程:
sudo lsof -i :80 - 查Docker映射:
docker ps和docker port 容器名 - 查防火墙放行:
sudo firewall-cmd --list-ports或sudo ufw status - 查云安全组:控制台入方向规则
- 外部验证:
nc -zv 服务器IP 端口
几个常见坑要避开。netstat不加sudo看不到进程;服务监听0.0.1时外部连不上;IPv6显示为[::]:80不代表IPv4一定通;Docker会通过docker-proxy占用端口;Kubernetes的NodePort还要看Service和节点安全组。
Linux服务器端口号查询Q&A
lunix怎么获得服务器的端口号,为什么ss和netstat结果不同
两者读取的内核信息相近,但ss更现代,netstat属于旧工具集,过滤条件和输出格式会有差异,容器、命名空间、权限不同也会造成结果不一致,排查时以sudo ss -tulnp为准,再用netstat交叉核对。
Linux查看服务器端口号需要root吗
查看监听地址和端口号通常不需要root,但显示进程名、PID一般需要sudo,普通用户能看到端口处于LISTEN,却可能看不到占用它的进程。
云服务器Linux端口号查询和安全组是什么关系
ss只能证明服务在本机监听,安全组决定公网或内网流量是否被放行,服务监听、系统防火墙、云安全组都满足,外部才能访问到对应端口。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/794562.html


