Ihr Linux-Server läuft, und Sie möchten jetzt überprüfen, ob ein bestimmter Port geöffnet ist, damit Sie darauf remote zugreifen können. Das Überprüfen offener Ports ist eine ziemlich übliche Aufgabe für Systemadministratoren, und es gibt einige verschiedene Möglichkeiten, dies in Linux zu tun.
In diesem Artikel lernen Sie mehrere Möglichkeiten kennen, um zu überprüfen, ob ein Port in Linux geöffnet ist, damit Sie diejenigen auswählen können, die am besten für Sie funktionieren. Bereit? Lesen Sie weiter!
Voraussetzungen
In diesem Tutorial wird eine praktische Demonstration durchgeführt. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben.
- A Linux computer. This guide uses Ubuntu 20.04, but any recent Linux distribution should work.
- Zugriff auf ein Terminal. Wenn Sie eine grafische Desktop-Umgebung verwenden, suchen Sie nach einem Terminal-Emulator-Programm in Ihrem Anwendungsmenü. Oder wenn Sie sich über SSH bei einem Remote-Server angemeldet haben,
- A user account with
sudo
privileges. For simplicity, this tutorial uses the root user.
Überprüfen Sie, ob ein Port in Linux geöffnet ist, indem Sie netstat verwenden
Die erste Methode, um zu überprüfen, ob ein Port in Linux geöffnet ist, besteht darin, den Befehl netstat
auszuführen. Dieser Befehl zeigt Netzwerkverbindungen, Routing-Tabellen und viele Netzwerkschnittstellenstatistiken an.
Der Befehl netstat
ist Teil des Pakets net-tools
, und dieses Paket wird möglicherweise nicht standardmäßig mit Ihrer Linux-Distribution geliefert. Auf Ubuntu installieren Sie netstat
, indem Sie die folgenden Befehle im Terminal ausführen.
Angenommen, Sie haben einen NGINX-Webserver im Einsatz und möchten überprüfen, ob der Port 80
geöffnet ist. Dies können Sie tun, indem Sie den folgenden Befehl ausführen. Ersetzen Sie 80
durch die Portnummer, die Sie überprüfen möchten.
Die Flags -tulpn
instruieren netstat
, alle hörenden Ports anzuzeigen. Der erste grep
-Befehl findet und filtert die Zeile, die das Wort LISTEN
im Ergebnis enthält. Der zweite grep
-Befehl filtert die Ergebnisse, um nur diejenigen Elemente anzuzeigen, die :80
entsprechen.
Um mehr über die netstat-Flags zu erfahren, führen Sie den Befehl netstat –help aus.
Wenn der Port geöffnet ist, sehen Sie folgende Ausgabe. Wie Sie sehen können, zeigt die Ausgabe, dass Port 80 auf dem System geöffnet ist. tcp ist der Protokolltyp, und :::80
zeigt an, dass es sich um einen TCPv6-Port handelt. 0.0.0.0:80
bedeutet, dass der Port für alle IPv4-Adressen geöffnet ist. 80
ist der Standard-HTTP-Port, der den Zugriff auf die Website ermöglicht.

Überprüfen, ob ein Port geöffnet ist, mit ss
Der ss
-Befehl ist ein weiteres Befehlszeilen-Dienstprogramm zum Überprüfen offener Ports. Dieser Befehl zeigt Socket-Statistiken an, die Sie verwenden können, um zu bestätigen, ob ein Port geöffnet ist oder nicht. Der ss
-Befehl zeigt mehr Informationen über offene Ports als andere Tools.
Wie der netstat
-Befehl weist das Flag -t
ss
an, nur TCP-Sockets anzuzeigen, -u
um nur UDP-Sockets anzuzeigen, und -l
um nur hörende Sockets anzuzeigen. Das Flag -p
zeigt den Prozessnamen oder die PID an, die den Port verwenden.
Sie werden folgende Ausgabe sehen, wenn der Port geöffnet ist. Wie Sie sehen können, enthält die Ausgabe den Prozessnamen und die PID für jeden hörenden Port. In diesem Fall ist Port 80 geöffnet, und der NGINX-Webserver verwendet ihn.

Überprüfen, ob ein Port mit lsof geöffnet ist
Der lsof
-Befehl ist ein weiteres praktisches Werkzeug zum Überprüfen offener Ports. Der Name lsof
steht für list open files, was Informationen über Dateien anzeigt, die auf dem System geöffnet sind. Diese Informationen umfassen Dateideskriptoren, Prozess-IDs, Benutzer-IDs usw.
Wie hilft Ihnen das Auflisten geöffneter Dateien dabei festzustellen, ob ein Port geöffnet ist? Sie haben wahrscheinlich bereits den Ausdruck „Alles in Linux ist eine Datei“ gehört – und dieser Ausdruck bedeutet, was er sagt.
Zum Beispiel, nehmen wir an, Sie möchten überprüfen, ob Port 22 geöffnet ist und Ihre Benutzer sich per SSH auf Ihren Server verbinden können. Führen Sie den unten stehenden Befehl aus, um geöffnete Dateien mit aktiven Verbindungen im Port 22 aufzulisten.
Der -i
-Schalter weist lsof
an, alle offenen Internet-Sockets anzuzeigen. Der -P
-Schalter zeigt die Portnummern anstelle der Dienstnamen an. Und der -n
-Schalter unterdrückt DNS- und Dienstnamensauflösungen, sodass Sie die IP-Adressen anstelle der Remote-Hostnamen sehen.
Wenn der Port geöffnet ist, sehen Sie die folgende Ausgabe. Wie Sie sehen können, enthält die Ausgabe Informationen über:
1027 ist die Prozess-ID des sshd-Dienstes.
root ist die Benutzer-ID, die den Port verwendet.
3u und 4u sind die Dateideskriptoren für IPv4 und IPv6.
31035 und 31037 sind die Netzwerkports für IPv4 und IPv6.
:22 zeigt an, dass Port 22 für alle IPv4- und IPv6-Adressen geöffnet ist.
- (LISTEN) zeigt an, dass der Port auf eingehende Verbindungen wartet.
0t0 ist der Status des Sockets, was bedeutet, dass der Socket im LISTEN-Zustand ist.

Überprüfen, ob ein Port geöffnet ist, unter Verwendung von nmap
Bisher haben Sie gesehen, wie Sie über die Befehlszeile unter Linux überprüfen können, ob ein Port geöffnet ist. Aber was ist, wenn Sie überprüfen möchten, ob ein Port auf einem Remote-Rechner geöffnet ist? In diesem Fall können Sie das nmap
-Werkzeug verwenden.
Aber bevor Sie nmap
ausführen, beachten Sie, dass dieses Werkzeug möglicherweise nicht Teil der Standardpakete Ihrer Linux-Distribution ist. In diesem Fall müssen Sie zuerst nmap
installieren, indem Sie den folgenden Befehl ausführen.
Führen Sie nun den folgenden Befehl aus, um zu überprüfen, ob ein Port auf einer Remote-Maschine geöffnet ist. Dieser Befehl testet, ob Port 22
auf 159.89.176.25
geöffnet ist, damit Ihr Benutzer eine SSH-Verbindung zu Ihrem Server herstellen kann. Ersetzen Sie bei Bedarf die IP-Adresse durch Ihre eigene.
Wie Sie sehen können, enthält die Ausgabe Informationen über:
- Die Startzeit des Portscans (2022-06-30 16:58 UTC).
- Die IP-Adresse der Remote-Maschine (159.89.176.25).
- Den Status des Ports (geöffnet).
- Den Dienst, der den Port verwendet (ssh).
- Den Status des Hosts (aktiv).

Das Ergebnis bestätigt, dass Benutzer über die IP-Adresse und den Port eine SSH-Verbindung zum Computer herstellen können.
Der folgende Screenshot zeigt eine erfolgreiche SSH-Verbindung zum Server und beweist, dass Port 22 geöffnet ist.

Überprüfung, ob ein Port von einem Shell-Skript aus geöffnet ist
Automatisierung ist immer eine gute Idee. Das Überprüfen offener Ports durch Ausführen eines Shell-Skripts ist eine ausgezeichnete Möglichkeit, mehrere Ports zu testen. Sie können beliebige frühere Methoden verwenden, um zu überprüfen, ob ein Port geöffnet ist. Für dieses Beispiel schreiben Sie jedoch ein einfaches Shell-Skript, das den Netcat nc
-Befehl ausführt.
1. Erstellen Sie eine Datei mit dem Namen check_port.sh in Ihrem Home-Verzeichnis mit Ihrem bevorzugten Texteditor. In diesem Beispiel wird nano verwendet.
2. Kopieren Sie den untenstehenden Beispielcode in Ihren Editor. Ersetzen Sie 80 durch die Portnummer, die Sie überprüfen möchten.
Die if-Bedingung überprüft, ob der 80-Port mit dem nc-Befehl geöffnet ist. Die 2>&1 und >/dev/null leiten die Fehler- und Ausgabemeldungen jeweils nach /dev/null um. Das /dev/null ist eine spezielle Datei, die alles, was sie empfängt, verwirft.
Wenn der Port geöffnet ist, gibt das Skript check_port.sh Online in die Konsole aus. Andernfalls gibt das Skript Offline aus.
Die Skriptdatei sollte ähnlich aussehen wie der untenstehende Screenshot. Speichern Sie das Skript und beenden Sie den Editor.

3. Führen Sie das Shell-Skript aus, um mit der Überprüfung der von Ihnen im Skript angegebenen offenen Ports zu beginnen.
Sie sehen eine der folgenden Ausgaben, je nachdem, ob der Port geöffnet ist. In diesem Fall ist der Port geöffnet, was die Meldung Online
bestätigt.

Sie können dieses Shell-Skript verwenden, um zu überprüfen, ob ein Port in regelmäßigen Abständen oder als geplanter Job geöffnet ist. Die Skripting-Funktion ist besonders hilfreich, wenn Sie mehrere Server überprüfen müssen. Sie müssen nur dieses check_port.sh-Skript auf allen Servern kopieren, die Sie überprüfen möchten, und es mithilfe von CI/CD-Tools wie Jenkins oder Ansible ausführen.
Testen, ob ein Port mit PowerShell geöffnet ist
PowerShell verfügt über ein integriertes Cmdlet zum Testen von Netzwerkverbindungen namens Test-NetConnection
– dieses Cmdlet ist jedoch nur auf Windows-Systemen verfügbar. Keine Sorge; Sie können PowerShell in Linux immer noch verwenden, um offene Ports und Verbindungen mithilfe der Klasse TcpClient zu überprüfen.
Wenn Ihr Linux-Computer noch kein PowerShell hat, installieren Sie es, indem Sie den Anweisungen in dieser Microsoft-Dokumentation folgen: PowerShell unter Linux installieren.
1. Starten Sie PowerShell, indem Sie den untenstehenden Befehl ausführen.

2. Erstellen Sie als Nächstes eine Datei namens Test-Port.ps1 mit Ihrem Texteditor. In diesem Beispiel wird nano verwendet.
3. Kopieren Sie anschließend den untenstehenden Code in Ihren Editor. Speichern Sie die Datei und beenden Sie danach den Editor.
Hinweis: Dieser Code ist ein Auszug aus dem All-in-One PowerShell-Test-Port-Test-Tool.
4. Nachdem Sie das Skript Test-Port.ps1 gespeichert haben, führen Sie den folgenden Befehl aus, um die Ports 22, 80, 443 und 53 zu testen.
Der Parameter -ComputerName akzeptiert die Liste der Hostnamen, FQDN oder IP-Adressen der Zielmaschine(n).
Der Parameter -Port akzeptiert ein Array von einer oder mehreren Portnummern zum Testen.
Wie unten gezeigt, zeigt das Ergebnis, dass die Ports 22 und 80 offen sind (True), während der Port 443 nicht offen ist (False).

Um dasselbe Skript gegen mehrere Zielendpunkte und Ports auszuführen, bearbeiten Sie den unten stehenden Code, um alle Zielcomputer im Parameter ComputerName und die Portnummern im Parameter Port hinzuzufügen.

Abschluss
In diesem Artikel haben Sie gelernt, wie Sie überprüfen können, ob ein Port in Linux geöffnet ist oder nicht. Sie haben auch gelernt, wie Sie überprüfen können, ob ein Port von einem Shell-Skript und PowerShell aus geöffnet ist. Jetzt können Sie eine dieser Methoden verwenden, um zu überprüfen, ob ein Port auf Ihrem Rechner oder einem entfernten Rechner geöffnet ist.
Aber hier sollten Sie nicht aufhören. Schauen Sie sich andere Fehlerbehebungs-Artikel an, um Ihre Fähigkeiten als Systemadministrator weiter zu verfeinern!
Source:
https://adamtheautomator.com/check-if-a-port-is-open-in-linux/