Wie können Sie unter Windows mithilfe der Befehlszeile überprüfen, ob ein Remote-Port geöffnet ist?

Antworten:

62

Ich habe neulich ein verstecktes Juwel von Microsoft gefunden, das zum Testen von Ports entwickelt wurde:

Portqry.exe

"Portqry.exe ist ein Befehlszeilenprogramm, mit dem Sie bei der Behebung von TCP / IP-Verbindungsproblemen helfen können. Portqry.exe wird auf Windows 2000-Computern, Windows XP-Computern und Windows Server 2003-Computern ausgeführt. Das Dienstprogramm meldet den Portstatus der TCP- und UDP-Ports auf einem von Ihnen ausgewählten Computer. "

Peter M
quelle
Hinweis: Beim Versuch, diese von Microsoft herunterzuladen, wurde eine Seite zurückgegeben, auf der angegeben wird, dass der Download "nicht mehr verfügbar" ist.
dgw
@dgw Danke dafür .. google zeigt eine neue Version, wenn Sie nach "portray" suchen, die ich morgen überprüfen werde
Peter M
52

Welche Windows-Version? Für Windows 8 / Server 2012 und höher funktioniert in PowerShell Folgendes:

Test-NetConnection 128.159.1.1 -Port 80

Einige Googler finden auch Alternativen, die .NET Framework direkt verwenden (da PowerShell dies zulässt), für Systeme, auf denen niedrigere Windows-Versionen ausgeführt werden, die nicht Test-NetConnectionverfügbar sind.

Wenn Sie nicht abgeneigt sind, Dienstprogramme von Drittanbietern zu verwenden, ist Nmap auch ein sehr guter Freund und funktioniert über die Befehlszeile.

Iszi
quelle
1
.Net-Methode:$connection = (New-Object Net.Sockets.TcpClient).Connect($target,$port); If ($connection.Connected) { $connection.Close() }
xXhRQ8sD2L7Z
Auf Win7 funktioniert das nicht :-(
samsmith
@samsmith Sprechen Sie über den Befehl in meiner Antwort oder den Kommentar des einen ST8Z ...? Die in meiner Antwort funktioniert nur für Win8 / 2k12 und höher, und die Antwort sagt so viel.
Iszi
1
Scheint Windows 8.1 zu sein - Scheint unter Windows 8 nicht zu finden
Andy Krouwel
1
Funktioniert hervorragend unter Windows 10 und ich muss keine Programme installieren oder Funktionen hinzufügen. Vielen Dank! :)
Steve Bauman
24

Verwenden Sie den Befehl telnet, um über den angegebenen Port eine Verbindung zum Server herzustellen und zu prüfen, ob eine Verbindung hergestellt werden kann.

Erfolg:

$ telnet my_server 25
220 my_server ESMTP Postfix

Scheitern:

$ telnet my_server 23632
Connecting To my_server...Could not open connection to the host, on port 23632:
Connect failed
Jørn Schou-Rode
quelle
14
funktioniert nicht für UDP.
Adriano Varoli Piazza
8
UDP ist verbindungslos ..
Amalgovinus
7

Telnet funktioniert für TCP.

Netcat ist ein besseres Tool für diese Art von Dingen, einschließlich UDP. Einige AV-Softwares halten es jedoch für ein "böses Hacker-Tool".

Whatsisname
quelle
1

Mit dem folgenden Befehl werden alle auf dem Computer verwendeten Ports aufgelistet ...

netstat -a

Die Ausgabe enthält das Protokoll, die lokale Adresse, die Fremdadresse und den aktuellen Status

Netstat-Dokumentation auf microsoft.com

Glatzkopf
quelle
8
Frage fragt nach offenen Ports auf einem Remotecomputer , nicht lokal.
Chris S
0

Verwenden Sie den Netcat-Windows-Port :

>nc -zvv www.google.com 80
www.google.com [108.177.96.103] 80 (http) open
sent 0, rcvd 0
>

>nc -zvv www.google.com 888
www.google.com [108.177.96.147] 888 (?): TIMEDOUT
sent 0, rcvd 0: NOTSOCK
>
Rustyx
quelle
-4

'netstat' ist dein Freund.

quosoo
quelle
3
Lokale Maschine ja, entfernte Maschine nein.
3
Diese Antwort wurde vor der Bearbeitung veröffentlicht, in der angegeben wurde, dass es sich um einen Port auf einem Remotecomputer handelt.