Wie wir alle wissen, wird ein Port jeweils nur von einem Prozess oder Dienst verwendet. Port identifiziert einen bestimmten Dienst oder einen Prozess, der auf dem System ausgeführt wird. Manchmal müssen wir bei der Fehlerbehebung wissen, auf welche Portnummer ein bestimmter Prozess lauscht. Allen auf einem System laufenden Prozessen sind eine Prozessidentifikationsnummer (PID) und eine Portnummer zugeordnet. Um herauszufinden, welche Portnummer ein bestimmter Prozess abhört, gibt es einige Möglichkeiten, über die wir in diesem Artikel sprechen werden.
Bevor Sie mit dem Artikel fortfahren, stellen Sie sicher, dass Sie über Root-Rechte verfügen. Es hilft Ihnen dabei, umfassende Informationen über die auf Ihrem System laufenden Prozesse zu erhalten.
Beachten Sie, dass wir Debian 10 zum Ausführen der in diesem Artikel erwähnten Befehle und Verfahren verwendet haben.
Methode 1:Verwenden des netstat-Befehls
Netstat ist ein am häufigsten verwendetes Befehlszeilendienstprogramm, mit dem Informationen zu Netzwerkverbindungen, Schnittstellenstatistiken und Routingtabellen angezeigt werden können. Es kann auch verwendet werden, um herauszufinden, welche Portnummer von einem bestimmten Prozess verwendet wird. Sie müssen es nicht installieren, da es bereits in den Repositories aller Linux-Distributionen installiert ist. Falls es jedoch noch nicht auf Ihrem System installiert ist, verwenden Sie den folgenden Befehl, um es zu installieren:
$ sudo apt install net-tools
Um die Portnummern zu finden, die von den Prozessen überwacht werden, führen Sie den folgenden Befehl im Terminal aus:
$ sudo netstat -ltnp
Die folgende Ausgabe zeigt die Portnummern, die von bestimmten Prozessen verwendet werden, zusammen mit ihren Prozess-IDs (PID).
Wenn Sie keine sudo-Berechtigungen haben und den obigen Befehl ohne sudo ausführen, werden der Programmname und die PID nicht angezeigt, wie in der folgenden Ausgabe zu sehen ist.
Sehen wir uns nun an, was die ltnp im obigen Befehl bedeutet:
ich – Abhörbuchsen anzeigen
t – TCP-Verbindungen anzeigen
n – IP-Adressen und Portnummern in numerischer Form anzeigen
p – PID/Programmname anzeigen
Betrachten wir die Ausgabe von $ sudo netstat -ltnp , die vierte Spalte ist genau das, wonach wir suchen:die Portnummer, auf der ein Prozess lauscht.
Um Portinformationen eines einzelnen Prozesses zu erhalten, können Sie die Ausgabe von netstat einfach mit dem Befehl grep weiterleiten.
Um beispielsweise die Portnummer anhand von „sshd“ zu finden, verwenden Sie den folgenden Befehl:
$ sudo netstat –ltnp | grep ‘sshd’
Wenn Sie den Prozessnamen herausfinden möchten, der auf einem bestimmten Port lauscht, sagen wir Port 21, wird der folgende Befehl verwendet:
$ sudo netstat -ltnp | grep -w ':21'
Methode 2:Verwenden des lsof-Befehls
Mit dem Befehl lsof können Sie die Liste aller Dateien anzeigen, die von den auf Ihrem System ausgeführten Prozessen geöffnet wurden. Lsof kann als einzige Quelle zum Abrufen von Informationen fungieren, die andernfalls einen großen Satz von Verwaltungswerkzeugen erfordert. Ähnlich wie beim Befehl netstat benötigen Sie sudo-Berechtigungen, um detaillierte Informationen zu erhalten.
Wenn lsof noch nicht auf Ihrem System installiert ist, verwenden Sie den folgenden Befehl im Terminal, um es zu installieren:
$ sudo apt install lsof
Nach der Installation können Sie das Dienstprogramm lsof verwenden, um Prozesse zu finden, die auf bestimmten Ports ausgeführt werden. Wenn Sie das Dienstprogramm lsof ohne Parameter ausführen, gibt es viele Informationen zurück, die für Sie schwer verständlich sind. Die Verwendung von Parametern mit lsof kann Ihnen jedoch helfen, die gewünschte Ausgabe herauszufiltern und sich auf sie zu konzentrieren.
Um nun den Prozess zu finden, der einen bestimmten Port überwacht, sagen wir Port 22, verwenden Sie den folgenden Befehl:
$ sudo lsof -i :22
Dieser Befehl gibt alle Prozesse zurück, die auf Port 22 laufen.
Methode 3:Verwenden des Fuser-Befehls
Der Fuser ist ein Linux-Befehl, der verwendet wird, um herauszufinden, welche Prozess-ID eine Datei, ein Verzeichnis oder Dateisysteme verwendet. Wir können diesen Befehl verwenden, um den Prozess zu finden, der auf einem bestimmten Port läuft.
Sie benötigen das Dienstprogramm psmisc, um den Befehl fuser zu verwenden. Wenn es noch nicht auf Ihrem System installiert ist, führen Sie den folgenden Befehl aus, um es zu installieren:
$ sudo apt install psmisc
Um die Prozesse anzuzeigen, die auf einem beliebigen Port ausgeführt werden, sagen wir TCP-Port 22, führen Sie den folgenden Befehl im Terminal aus:
$ sudo fuser 22/tcp
Der obige Befehl hat den Prozess zurückgegeben, der auf Portnummer 22 lauscht. Um nun den Prozessnamen gegen eine beliebige Prozess-ID anzuzeigen, verwenden Sie die folgende Befehlssyntax:
$ ps -p [processID] -o comm=
In unserem Fall wäre es
$ ps -p [5859] -o comm=
Aus der obigen Ausgabe können wir den Prozessnamen sshd anhand der Prozess-ID 5859 gefunden haben. Dies impliziert, dass der sshd mit der Prozess-ID 5859 auf Port 22 lauscht.
In diesem Artikel haben wir einige Befehlszeilenprogramme kennengelernt, die Sie verwenden können, um anzuzeigen, welche Ports ein bestimmter Prozess überwacht.