CLI AI

Prüfen, ob ein Port auf einem Remote-Server offen ist

2026-06-10

Der schnelle Check ist nc -zv host port: "succeeded" heißt der Port ist offen, "refused" heißt die Maschine hat geantwortet, aber niemand lauscht, und komplette Stille heißt fast immer, dass eine Firewall das Paket verwirft. Das sind drei verschiedene Fehler mit drei verschiedenen Lösungen. Das hier ist der Entscheidungsbaum, um sie zu unterscheiden, keine weitere Liste von fünf Tools, die alle denselben Handshake machen.

1. Ist der Port wirklich offen?

clai
$ clai prüfe ob Port 8099 auf 127.0.0.1 offen ist→ nc -zv 127.0.0.1 8099Connection to 127.0.0.1 8099 port [tcp/*] succeeded!

-z prüft nur die Verbindung, ohne Daten zu senden, -v gibt das Ergebnis aus. Die kürzestmögliche Antwort auf die Frage.

2. Port geschlossen — und das ist eine konkrete Antwort

clai
$ clai prüfe Port 8098→ nc -zv 127.0.0.1 8098nc: connect to 127.0.0.1 port 8098 (tcp) failed: Connection refused

"Connection refused" bedeutet, die Maschine ist erreichbar und hat aktiv abgelehnt — niemand lauscht auf diesem Port. Gute Nachricht: Das Netzwerk ist in Ordnung, das Problem liegt beim Dienst.

3. Ablehnung von Stille unterscheiden

clai
$ clai prüfe die Ports 8098 und 8099 und zeig den Grund→ nmap --reason -p 8099,8098 127.0.0.1PORT     STATE  SERVICE REASON8098/tcp closed unknown conn-refused8099/tcp open   unknown syn-ack

Die Spalte REASON ist die eigentliche Diagnose. syn-ack heißt offen. conn-refused heißt niemand lauscht. no-response heißt das Paket ist verschwunden — fast immer eine Firewall. Nur hier zeigen sich die drei Ursachen getrennt.

4. Von der anderen Seite schauen: wer lauscht

clai
$ clai zeig welcher Prozess auf Port 8099 lauscht→ ss -tlnp | grep 8099LISTEN 0      5            0.0.0.0:8099       0.0.0.0:*    users:(("python3",pid=2411411,fd=3))

0.0.0.0:8099 heißt alle Interfaces. Stünde dort 127.0.0.1:8099, würde der Dienst nur lokal antworten, und ein Remote-Check würde scheitern, obwohl der Dienst völlig gesund ist. Das ist die dritte Ursache, und sie zeigt sich nur hier.

5. Weder nc noch nmap installiert

clai
$ clai prüfe den Port ohne zusätzliche Tools zu installieren→ timeout 2 bash -c 'echo > /dev/tcp/127.0.0.1/8099' && echo "open" || echo "closed"open

bash kann über das Pseudo-Device /dev/tcp eine rohe TCP-Verbindung öffnen. Funktioniert in einem nackten Container ohne nc und ohne nmap. timeout ist Pflicht — sonst wartet man bei einem gefilterten Port das Kernel-eigene Timeout aus.

6. Mehrere Ports auf einem Remote-Host auf einmal prüfen

clai
$ clai prüfe die Ports 22, 80 und 443 auf example.com→ nmap -Pn -p 22,80,443 example.com

-Pn überspringt den Ping-Check. Viele Hosts antworten nicht auf ICMP, und ohne dieses Flag hält nmap den Host für down und scannt die Ports gar nicht erst.

Stolperfallen

  • "Connection refused" und "Timeout" sind unterschiedliche Diagnosen. Refused heißt, das Paket kam an. Stille heißt Firewall oder Paketverlust. Behandeln Sie das eine nicht wie das andere.
  • Fremde Hosts zu scannen kann illegal sein. Richten Sie nmap auf Ihre eigene Infrastruktur, nicht auf fremde.
  • UDP lässt sich so nicht prüfen. Für UDP gibt es keinen Handshake, nc -zu meldet fast immer "succeeded". Dafür braucht es nmap -sU und Geduld.

Verwandte Fragen

Der Port ist offen, aber die App antwortet nicht. Es lauscht der falsche Prozess, oder er ist zu langsam. Prüfen Sie die ss -tlnp-Ausgabe und die Logs des Dienstes.

Wie prüfe ich einen Port von Windows aus? Test-NetConnection -Port 443 example.com in PowerShell.

Warum wird telnet nicht mehr empfohlen? Es macht dasselbe, ist aber selten installiert, während nc und /dev/tcp fast überall verfügbar sind.

Siehe auch

Schluss mit dem Auswendiglernen von nc- und nmap-Flags – beschreiben Sie das Problem, CliAI schreibt den Befehl. In einer Zeile installieren.