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


478

我正在尝试将站点安装在服务器上的备用端口下,但是该端口可能已被防火墙关闭。有没有一种方法可以在特定端口上ping出或输入,以查看它是否打开?


Answers:


732

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

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

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

在随后的测试中,通常:

  • 连接被拒绝意味着该端口上没有任何内容
  • 接受表示该端口正在运行
  • 超时意味着防火墙阻止了访问

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


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

12
@PankajKohli使用腻子的Telnet客户端来代替。不需要安装。
科林·皮卡德

52
是什么Could not open connection to the host, on port *x*: Connect failed指示?
肯尼·埃维特

2
@Alnitak我只是想检查一下,因为我认为这已经回答了我的问题。我何时telnet api-3t.sandbox.paypal.com 443收到Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failed这是因为防火墙阻止了它吗?
Popeye

2
如果您打开telnet.exe,然后键入o host portvs vs命令行(cmd.exe),然后键入telnet host port
Pawel Cioch

185

在Windows上,您可以使用

netstat -na | find "your_port"

缩小结果范围。您还可以过滤LISTENINGESTABLISHEDTCP和这样的。请注意,它区分大小写。


4
您不能使用这种查找方式,它将在搜索文件,您应该使用grep
Moataz Elmasry 2013年

38
@MoatazElmasry,在Linux上是正确的,但这在Windows服务器上,在这里find是正确的命令。Grep在Windows上不可用。我只是运行了这里提到的确切命令,它运行得很好。
Ben Wyatt 2014年

4
当我使用该命令时,即netstat -an | 找到“ 19345”,我没有得到任何结果。这是什么意思?
nanosoft

14
find对我而言,它在Windows 10中不起作用,但是netstat -na | findstr "8080"起作用了
2013年

6
什么都没有发生,没有find或findstr
有用的蜜蜂2016年

83

如果您是从外部进行检查,而不是从服务器本身进行检查,并且不想麻烦安装telnet(因为Windows的最新版本没有提供该服务)或任何其他软件,则您具有本机PowerShell:

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed

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

PS:请注意,这些天在twittersphere上有一些声明,暗示可以通过提及PowerShell Core中的“ Test-Connection”或快捷方式“ tnc”来改善此答案。请参阅https://twitter.com/david_obrien/status/1214082339203993600,并帮助我编辑此答案以改善它!


(如果您的PSVersion <4.0,则很不走运。请检查此表:

在此处输入图片说明

即使您可以通过安装Windows Management Framework 4.0来升级PowerShell的版本,但它对我来说并没有奏效,但Test-NetConnection cmdlet仍然不可用。


3
这是最好的答案。在其他人的服务器上安装telnet并不总是那么简单!
TrojanName

绝对是最好的答案。
QtRoS

1
这是一个比telnet更可靠的选项,telnet只会挂起不报告任何内容,而这将报告我的情况下该端口可用。
axk

42

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

portqry -n 11.22.33.44 -p tcp -e 80

4
防火墙端口通常将显示为“ FILTERED”。
dlanod

您也可以使用此工具检查UDP端口:portqry -n 11.22.33.44 -p udp -e 19132
安东尼

40

我确实喜欢这样:

netstat -an | find "8080" 

从telnet

telnet 192.168.100.132 8080

并且只需确保该计算机上的防火墙已关闭。


当我使用该命令时,即netstat -an | 找到“ 19345”,我没有得到任何结果。这是什么意思?–
nanosoft

2
这意味着该端口是免费的
Sarvar Nishonboev

运行netstat -an | find "8080"它时,我收到一个错误消息:no such file named "8080"
Pragyaditya Das

24

如果telnet不可用,请下载PuTTY。它是远胜于Telnet,SSH等的客户端,在许多情况下(不仅限于此)都将非常有用,尤其是在管理服务器的情况下。


是的,但是不是要使用AmForth粘贴Forth代码(除非将PuTTY与Edit Overflow结合使用)。
彼得·莫滕森


12

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

netstat -an |find /i "listening"

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

netstat -a

7

在Windows Server上,您可以使用

netstat -an | where{$_.Contains("Yourport")}

不能以任何方式解决防火墙问题。
罗恩侯爵

5
这适用于Powershell
Paco Zarate

还是您的意思是“ Windows服务器”?
彼得·莫滕森



1

这对我有用:

  • 打开命令提示符
  • 类型 telnet
  • Microsoft Telnet>打开<主机名或IP地址> <空间> <端口>

它将确认端口是否打开。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.