在Windows服务器上查看已开启端口,最快方式是命令行运行 netstat -ano 并过滤 LISTENING 状态;PowerShell 用户可直接执行 Get-NetTCPConnection -State Listen。
windows服务器怎么查看开放了哪些端口?netstat命令详解
Windows服务器无论是2012、2016、2019还是2026版本,系统自带的 netstat 命令都是最直接的端口排查工具,它不需要额外安装软件,能同时列出协议、本地地址、外部地址、连接状态和进程ID(PID)。
操作步骤很固定:
- 按
Win+R输入cmd回车,打开命令提示符。 - 输入
netstat -ano回车。 - 查看输出结果中的“本地地址”列,格式为
IP:端口。0.0.0:3389表示所有网卡上监听3389端口,0.0.1:1433表示仅本机可访问。 - 状态列中只有
LISTENING才代表端口真正开放并等待连接。TIME_WAIT、ESTABLISHED、CLOSE_WAIT等状态不算监听端口。
如果只想看监听端口,使用过滤命令:
netstat -ano | findstr LISTENING
想确认某个指定端口是否开放,例如远程桌面:
netstat -ano | findstr :3389
返回一行带 LISTENING 的记录,说明该端口已在服务器本机开放,没有输出,则服务未监听或端口号被修改。
用PowerShell更清晰,尤其适合远程运维脚本化调用:
Get-NetTCPConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess | Sort-Object LocalPort
这条命令直接输出监听地址、端口和PID,比netstat结果更整洁。PowerShell在Windows Server 2012及以上版本自带,无需额外安装。
图形界面方式也值得一提,打开任务管理器,切到“性能”选项卡,点击下方“打开资源监视器”,在资源监视器中进入“网络”选项卡,点击“侦听端口”,就能直观看到端口、协议、进程名和防火墙状态,适合不熟悉命令行的运维新人。
常见Windows服务器监听端口对照表
| 端口号 | 协议 | 对应服务 |
|---|---|---|
| 135 | TCP | RPC服务 |
| 139/445 | TCP | NetBIOS / SMB文件共享 |
| 3389 | TCP | 远程桌面(RDP) |
| 1433 | TCP | SQL Server默认实例 |
| 3306 | TCP | MySQL(需自行安装) |
| 80/443 | TCP | IIS Web服务 |
| 5985/5986 | TCP | WinRM远程管理(HTTP/HTTPS) |
这张表能帮你快速判断哪些端口是正常业务需要,哪些属于高危暴露面。
远程桌面端口3389不通?用这3步快速排查
远程桌面连不上时,很多人第一反应是服务器宕机,实际多数情况是端口没开或者被安全策略挡住。
- 第一步,确认服务器本机3389是否监听,登录服务器(通过VNC、IPMI或其他方式)执行
netstat -ano | findstr :3389,没有结果就检查Remote Desktop Services服务是否启动,运行services.msc查看,若服务正常但仍无监听,可能端口被改过,查注册表路径HKEY_LOCAL_MACHINESystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp中的PortNumber值,修改后需要重启Remote Desktop Services服务。 - 第二步,检查Windows防火墙入站规则,运行
wf.msc打开高级安全防火墙,在“入站规则”中找到“远程桌面 – 用户模式(TCP-In)”,确认已启用,如果端口被改过,需要新建规则放行对应TCP端口。 - 第三步,从外部测试端口连通性,在办公电脑执行
Test-NetConnection -ComputerName 服务器公网IP -Port 3389,返回TcpTestSucceeded : True表示端口可达,若为False,可能机房安全组、云平台安全组或上层防火墙未放行,需要到控制台检查安全组入方向规则是否允许3389。
这3步从本机到防火墙再到外部网络,逐层排查,能覆盖大部分远程桌面连接失败的情况。
对比:windows查看端口占用和linux命令有什么不同
混合运维环境中,经常需要在Windows服务器和Linux服务器之间切换排查端口,两者思路相同,但命令和输出差异明显。
| 对比项 | Windows | Linux |
|---|---|---|
| 查看所有监听端口 | netstat -ano |
netstat -tlnp 或 ss -tlnp |
| 过滤指定端口 | findstr :3389 |
grep :22 |
| 显示进程名 | 需通过PID查询 tasklist |
直接显示进程名 |
| 图形工具 | 资源监视器、TCPView | 较少,主要命令行 |
| 权限要求 | 普通用户即可 | 部分选项需root/sudo |
Windows的netstat输出中不直接显示进程名,只有一个PID,很多运维人员会卡在这一步,解决方法是运行 tasklist | findstr <PID> 或使用PowerShell的 Get-Process -Id <PID> 查看进程名,Linux下 netstat -tlnp 通常直接显示 sshd、nginx 这类进程名,定位更快。
另一个实际区别:Windows防火墙默认策略和Linux iptables/firewalld管理方式不同,Windows更多依赖图形化入站/出站规则,Linux则习惯用命令行放行端口,在排查端口是否对外可达时,Windows要同时检查“监听”和“防火墙规则”两层,Linux同样要检查应用监听和iptables/firewalld规则,二者不能互相替代。
北京机房windows服务器端口检查的免费方法和安全建议
在托管机房或云上部署Windows服务器,端口管理不只是技术问题,也涉及等保合规,北京地区机房通常要求服务器关闭高危端口,例如445、135、139,或至少限制来源IP。
免费工具推荐:
- 系统自带
netstat、PowerShell:不花钱,最基础。 - 微软官方 Sysinternals 套件中的 TCPView:免费图形化工具,实时显示端口和进程,支持结束进程、关闭连接。
- Nmap:免费开源,可在办公网扫描服务器开放端口,适合安全审计,命令示例
nmap -p 1-65535 服务器IP。
安全建议:
- 关闭不必要的服务,打印机共享、文件共享等如果不用,对应445、139端口就会消失。
- 数据库端口不直接对公网开放,SQL Server默认1433、MySQL默认3306,只允许内网应用服务器访问。
- 远程桌面端口可修改,将默认3389改为高端口能减少自动扫描,但修改后需同步更新防火墙规则和安全组。
- 定期生成端口清单,在计划任务中执行
netstat -ano > C:port_report_$(date +%Y%m%d).txt,方便对比新增端口。
业内专家指出,服务器暴露面越小,被攻击风险越低,日常端口检查要把“监听地址”和“防火墙来源IP”放在一起看,而不只是看端口通不通。
查看Windows服务器开启哪些端口,核心命令就两条:netstat -ano | findstr LISTENING 和 Get-NetTCPConnection -State Listen,遇到远程桌面、数据库连不上,先用本机命令确认端口是否LISTENING,再从内到外检查防火墙和安全组,端口管理不是一次性动作,而是服务器安全基线的一部分。
查看windows服务器开启哪些端口的常见问题
netstat输出TIME_WAIT算不算端口开启?
不算,TIME_WAIT是TCP主动关闭方在连接结束后保持的状态,目的是防止旧包影响新连接,只有 LISTENING 表示端口在等待接受连接,才算开放端口,用 findstr LISTENING 过滤最准确。
怎么查看某个PID对应的程序名称?
命令行运行 tasklist | findstr <PID> 可以显示进程名,PowerShell 运行 Get-Process -Id <PID> 也能看到进程名和路径,任务管理器“详细信息”标签页添加PID列后,可以右键跳转到服务或文件位置。
服务器防火墙端口开放了但外部telnet不通,会是什么原因?
可能原因有几类:服务只监听 0.0.1,没监听 0.0.0;机房或云平台安全组未放行;服务器上第三方安全软件拦截;端口号被修改为非默认值,排查顺序应从本机监听IP、Windows防火墙、上层安全组、外部测试逐层进行,最终外部测试以 Test-NetConnection -ComputerName 服务器IP -Port 端口号 返回 True 为准。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/681132.html





