如何确定Windows服务器上是否打开了端口?

Jas*_*son 465 port ping windows-server-2003

我正在尝试在服务器上的备用端口下安装站点,但该端口可能被防火墙关闭.有没有办法ping或在特定端口上,看它是否打开?

Aln*_*tak 714

假设它是您尝试使用的TCP(而不是UDP)端口:

  1. 在服务器本身,用于netstat -an检查哪些端口正在侦听

  2. 从外部,只是telnet host port(或telnet host:port在Unix系统上)查看连接是否被拒绝,接受或超时

在后一个测试中,那么一般来说:

  • 连接被拒绝意味着该端口上没有任何运行
  • 接受意味着该端口上正在运行某些东西
  • 超时意味着防火墙阻止访问

在Win7或Vista默认选项'telnet'不被识别为内部或外部命令,可操作程序或批处理文件.要解决此问题,只需启用它:单击"开始","控制面板","程序",然后单击"打开或关闭Windows功能".在列表中,向下滚动并选择Telnet Client,然后单击"确定"

  • 在Win7或Vista默认选项中,'telnet'不被识别为内部或外部命令,可操作程序或批处理文件.要解决此问题,只需启用它:单击"开始","控制面板","程序",然后单击"打开或关闭Windows功能".在列表中,向下滚动并选择Telnet Client,然后单击"确定" (308认同)
  • 什么"无法打开与主机的连接,在端口*x*:连接失败"表示? (51认同)
  • @PankajKohli使用[PuTTy](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)telnet客户端.它不需要安装. (12认同)
  • @Alnitak我只是想检查,因为我认为这已经回答了我的问题.当我做`telnet api-3t.sandbox.paypal.com 443`我得到`连接到api-3t.sandbox.paypal.com ...无法打开端口443上的主机连接:连接失败`这是因为防火墙阻止它? (2认同)
  • 如果你打开telnet.exe然后输入`o host port` vs open命令行(cmd.exe)然后输入`telnet host port`就有区别了 (2认同)

小智 173

只是想在Windows上添加它,你可以使用

netstat -na | find "your_port"
Run Code Online (Sandbox Code Playgroud)

缩小结果范围.您还可以过滤LISTENING,ESTABLISHED,TCP和这样的.但请注意它是区分大小写的.

  • @MoatazElmasry,这在Linux上是正确的,但这是在Windows服务器上,其中find是正确的命令.Grep在Windows上不可用.我刚刚运行了这里提到的确切命令,它运行得很好. (37认同)
  • `find`对我来说在Windows 10中不起作用,但是`netstat -na | findstr"8080"`工作 (12认同)
  • 什么都没有发生,没有发现或发现 (5认同)
  • 你不能使用像这样的查找,它将搜索文件,你应该使用grep (4认同)
  • 当我使用该命令即netstat -an | 找到"19345",我没有得到任何结果.这是什么意思? (4认同)

kno*_*cte 75

如果你是从外部检查,而不是从服务器本身检查,并且你不想打扰安装telnet(因为它没有附带最新版本的Windows)或任何其他软件,那么你有本机PowerShell:

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed
Run Code Online (Sandbox Code Playgroud)

(不幸的是,这仅适用于PowerShell 4.0或更高版本.要检查您的PS版本,请键入$PSVersionTable.)


(如果你有PSVersion <4.0,那你就不走运了.查看下表:

在此输入图像描述

即使您可以通过安装Windows Management Framework 4.0来升级您的PowerShell版本,但它对我来说并不起作用,Test-NetConnection cmdlet仍然不可用).

  • 这是最好的答案。在其他人的服务器上安装telnet并不总是那么简单! (3认同)
  • 绝对应该是最佳答案。 (2认同)

小智 42

在Windows计算机上,您可以使用Microsoft的PortQry来检查应用程序是否已使用以下命令侦听特定端口:

portqry -n 11.22.33.44 -p tcp -e 80
Run Code Online (Sandbox Code Playgroud)

  • 防火墙端口通常显示为"已过滤". (4认同)

Sar*_*oev 38

我确实喜欢这样:

netstat -an | find "8080" 
Run Code Online (Sandbox Code Playgroud)

来自telnet

telnet 192.168.100.132 8080
Run Code Online (Sandbox Code Playgroud)

并确保该计算机上的防火墙已关闭.

  • 这意味着这个端口是免费的 (2认同)

Mac*_*tyn 24

如果没有telnet,请下载PuTTY.它是一个远远优越的telnet,ssh等客户端,并且在许多情况下都很有用,而不仅仅是这个,特别是如果你正在管理服务器.


Dou*_*yle 13

你想要一个工具吗?http://www.canyouseeme.org/上有一个网站.否则,您需要一些其他服务器来回叫,看看端口是否打开...


zeh*_*eeb 12

如果要查看Windows服务器上的所有已使用和侦听端口,请使用此选项:

netstat -an |find /i "listening"
Run Code Online (Sandbox Code Playgroud)

查看所有打开,侦听,建立的端口:

netstat -a
Run Code Online (Sandbox Code Playgroud)


小智 7

在Windows服务器上,您可以使用

netstat -an | where{$_.Contains("Yourport")}
Run Code Online (Sandbox Code Playgroud)

  • 这适用于powershell (5认同)