Wie stelle ich fest, ob auf einem Windows-Server ein Port geöffnet ist? [geschlossen]


478

Ich versuche, eine Site unter einem alternativen Port auf einem Server zu installieren, aber der Port wird möglicherweise von einer Firewall geschlossen. Gibt es eine Möglichkeit, an einem bestimmten Port zu pingen oder zu pingen, um festzustellen, ob er geöffnet ist?


Antworten:


732

Angenommen, es handelt sich um einen TCP-Port (und nicht um einen UDP-Port), den Sie verwenden möchten:

  1. netstat -anÜberprüfen Sie auf dem Server selbst, welche Ports empfangsbereit sind.

  2. Verwenden Sie von außen einfach telnet host port(oder telnet host:portauf Unix-Systemen), um festzustellen, ob die Verbindung abgelehnt, akzeptiert oder eine Zeitüberschreitung festgestellt wurde.

Bei diesem letzteren Test dann im Allgemeinen:

  • Verbindung abgelehnt bedeutet, dass an diesem Port nichts ausgeführt wird
  • Akzeptiert bedeutet, dass an diesem Port etwas ausgeführt wird
  • Timeout bedeutet, dass eine Firewall den Zugriff blockiert

Unter Windows 7 oder Windows Vista wird die Standardoption 'Telnet' nicht als interner oder externer Befehl, ausführbares Programm oder Batchdatei erkannt. Um dies zu lösen, aktivieren Sie es einfach: Klicken Sie auf * Start ** → SystemsteuerungProgrammeWindows-Funktionen ein- oder ausschalten. Scrollen Sie in der Liste nach unten, wählen Sie Telnet Client aus und klicken Sie auf OK.


312
In Win7 oder Vista wird die Standardoption 'telnet' nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt. Um dies zu lösen, aktivieren Sie es einfach: Klicken Sie auf Start, Systemsteuerung, Programme und aktivieren oder deaktivieren Sie die Windows-Funktionen.
Scrollen Sie

12
@PankajKohli verwendet stattdessen den PuTTy- Telnet-Client. Es muss nicht installiert werden.
Colin Pickard

52
Was bedeutet Could not open connection to the host, on port *x*: Connect failed?
Kenny Evitt

2
@Alnitak Ich wollte nur nachsehen, da ich denke, dass dies meine Frage bereits beantwortet. Wann telnet api-3t.sandbox.paypal.com 443bekomme ich Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedIst das, weil die Firewall es blockiert?
Popeye

2
Es gibt einen Unterschied, wenn Sie telnet.exe öffnen und dann o host portvs open command line (cmd.exe) telnet host port
eingeben

185

Unter Windows können Sie verwenden

netstat -na | find "your_port"

die Ergebnisse einzugrenzen. Sie können auch Filter für LISTENING, ESTABLISHED, TCPund so weiter . Beachten Sie jedoch, dass zwischen Groß- und Kleinschreibung unterschieden wird.


4
Sie können find so nicht verwenden, es wird nach Dateien suchen, Sie sollten grep verwenden
Moataz Elmasry

38
@MoatazElmasry, das stimmt unter Linux, aber dies ist auf einem Windows-Server, wo find der richtige Befehl ist. Grep ist unter Windows nicht verfügbar. Ich habe gerade den hier erwähnten genauen Befehl ausgeführt und er hat perfekt funktioniert.
Ben Wyatt

4
Als ich diesen Befehl benutzte, dh netstat -an | finde "19345", ich habe kein Ergebnis bekommen. was bedeutet das?
Nanosoft

14
findfunktionierte nicht in Windows 10 für mich, aber netstat -na | findstr "8080"funktionierte
Arun

6
nichts passiert, nicht mit find oder findstr
nützlichBee

83

Wenn Sie von außen und nicht vom Server selbst prüfen und sich nicht die Mühe machen möchten, Telnet (da es nicht mit den letzten Windows-Versionen geliefert wird) oder eine andere Software zu installieren, haben Sie native PowerShell:

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

(Leider funktioniert dies nur mit PowerShell 4.0 oder neuer. Geben Sie Folgendes ein, um Ihre PowerShell-Version zu überprüfen $PSVersionTable.)

PS: Beachten Sie, dass es heutzutage einige Behauptungen auf der Twittersphere gibt, die darauf hindeuten, dass diese Antwort durch Erwähnung von "Test-Connection" von PowerShell Core oder der Verknüpfung "tnc" verbessert werden könnte. Siehe https://twitter.com/david_obrien/status/1214082339203993600 und helfen Sie mir, diese Antwort zu bearbeiten, um sie bitte zu verbessern!


(Wenn Sie eine PSVersion <4.0 haben, haben Sie kein Glück. Überprüfen Sie diese Tabelle:

Geben Sie hier die Bildbeschreibung ein

Obwohl Sie Ihre PowerShell-Version durch Installation von Windows Management Framework 4.0 aktualisieren können , hat dies für mich nicht funktioniert. Das Cmdlet Test-NetConnection ist immer noch nicht verfügbar.


3
Dies ist die beste Antwort. Die Installation von Telnet ist auf den Servern anderer Benutzer nicht immer einfach!
TrojanName

Muss auf jeden Fall die beste Antwort sein.
QtRoS

1
Dies ist eine zuverlässigere Option als Telnet. Telnet würde einfach hängen bleiben und nichts melden, während dies meldet, dass der Port in meinem Fall verfügbar ist.
Axk

42

Auf einem Windows-Computer können Sie mit PortQry von Microsoft mithilfe des folgenden Befehls überprüfen, ob eine Anwendung bereits einen bestimmten Port überwacht :

portqry -n 11.22.33.44 -p tcp -e 80

4
Firewall-Ports werden im Allgemeinen als "GEFILTERT" angezeigt.
Dlanod

Sie können dieses Tool auch verwenden, um den UDP-Port zu überprüfen:portqry -n 11.22.33.44 -p udp -e 19132
Antony

41

Das hat mir gefallen:

netstat -an | find "8080" 

von Telnet

telnet 192.168.100.132 8080

Stellen Sie einfach sicher, dass die Firewall auf diesem Computer ausgeschaltet ist.


Als ich diesen Befehl benutzte, dh netstat -an | finde "19345", ich habe kein Ergebnis bekommen. was bedeutet das? -
Nanosoft

2
es bedeutet, dass dieser Hafen frei ist
Sarvar Nishonboev

Ich erhalte eine Fehlermeldung, wenn ich es ausführe netstat -an | find "8080",no such file named "8080"
Pragyaditya Das

24

Wenn telnetnicht verfügbar, laden Sie PuTTY herunter . Es ist ein weit überlegener Telnet-, SSH- usw. Client und in vielen Situationen nützlich, nicht nur in diesem, insbesondere wenn Sie einen Server verwalten.


Ja, aber nicht zum Einfügen von Forth-Code, beispielsweise mit AmForth (es sei denn, Sie verwenden PuTTY in Kombination mit Edit Overflow ).
Peter Mortensen


12

Verwenden Sie diese Option, wenn Sie alle verwendeten und empfangenden Ports auf einem Windows-Server anzeigen möchten:

netstat -an |find /i "listening"

Alle offenen, abhörenden und eingerichteten Ports anzeigen:

netstat -a




1

Folgendes hat bei mir funktioniert:

  • Öffnen Sie eine Eingabeaufforderung
  • Art telnet
  • Microsoft Telnet> Öffnen Sie <Hostname oder IP-Adresse> <Leerzeichen> <Port>

Es wird bestätigt, ob der Port geöffnet ist.


0

Ein weiteres Dienstprogramm, das ich gefunden habe und das auch gut und klein ist, ist PortQry Command Line Port Scanner Version 2.0 .

Sie können einen Server und einen Port anpingen und es wird Ihnen der Status des Ports angezeigt. Es gibt ein Befehlszeilenprogramm und eine Benutzeroberfläche dafür.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.