aperçu
Nous savons tous qu’un port ne peut être utilisé que par une seule application ou service en même temps. Parfois, nous avons besoin de savoir quel processus écoute sur un port spécifique.
dans ce tutoriel, nous verrons différentes approches pour trouver le processus d’écoute sur un port particulier sous Linux.
autorisation root
sous Linux, seul L’utilisateur root ou le propriétaire du processus peut obtenir les informations détaillées du processus.,
lorsque nous voulons vérifier une écoute de processus sur un port particulier, nous ne savons pas à qui appartient le processus.
avec l’autorisation root, nous pouvons obtenir toutes les informations nécessaires sur le processus, par exemple, l’identifiant du processus.
par conséquent, nous devons commencer nos outils de réseau avec l’utilisateur root (ou sudo).
à l’Aide de la commande netstat
La commande netstat est un membre du paquet net-tools.
Dans le passé, il est préinstallé dans de nombreuses distributions Linux. Cependant, le package net-tools n’a pas été mis à jour depuis 2011.,
en Raison de son manque de soutien de moderne noyau Linux et d’autres raisons, le paquet net-tools est devenu obsolète.
cela dit, netstat lui-même est encore largement utilisé, alors regardons comment cela peut aider.
tout d’abord, voyons un exemple de sortie de la commande netstat:
avec les options ltnup, netstat nous montre tous les ports utilisés dans l’exemple ci-dessus.,
voyons ce que signifient les options:
- l – afficher uniquement les sockets d’écoute
- t – afficher les connexions TCP
- n – afficher les adresses sous forme numérique
- u – Afficher les connexions UDP
- p – Afficher l’id du processus/le nom du programme
Si nous passons en revue la sortie un port particulier.
Nous pouvons simplement rediriger la sortie netstat vers la commande grep pour obtenir les informations de processus sur un port individuel.,
par exemple, voyons quel processus écoute sur le port 22:
root# netstat -ltnup | grep ':22'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 575/sshd
en utilisant ss
dans la section précédente, nous avons discuté du fait que le paquet net-tools est obsolète.
la commande ss remplace la commande netstat.
voyons maintenant comment utiliser la commande ss pour voir quel processus écoute sur le port 22:
Si nous vérifions les options, nous constatons que les options que nous avons passées à la commande ss sont les mêmes que celles que nous avons passées à netstat.,
la seule différence est que nous utilisions le filtre d’état de l’utilitaire ss au lieu d’un processus grep supplémentaire pour filtrer la sortie.
semblable à la sortie de la commande netstat, les informations de processus attendues se trouvent également dans la dernière colonne.
Utilisation de lsof
La commande lsof peut lister tous les fichiers ouverts sur un système Linux.,
nous pouvons utiliser la commande lsof pour trouver le processus en utilisant un port spécifique avec l’option-I :port_number:
root# lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)
Les quatre premières colonnes de la sortie ci-dessus nous indiquent le nom du processus écouté sur le port 22 et son PID, son propriétaire et le descripteur de fichier.
nous pouvons passer plusieurs-I :port à la commande lsof pour connaître les processus qui écoutent sur différents ports:
root# lsof -i :22 -i :68COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)dhcpcd 8822 root 10u IPv4 49601 0t0 UDP *:bootpc
en utilisant fuser
l’utilitaire de fusion affiche les processus qui utilisent des fichiers nommés, des sockets ou des systèmes de fichiers., Il est inclus dans le paquet psmisc et préinstallé sur de nombreuses distributions Linux modernes par défaut.
Nous pouvons l’utiliser pour afficher les informations concernant le processus en cours d’exécution sur un port spécifique. Encore une fois découvrons le PID du port TCP d’écoute de traitement 22:
root# fuser 22/tcp22/tcp: 575
la sortie ci-dessus est assez simple. Nous savons que le processus avec PID 575 écoute sur le port TCP 22.
cependant, il ne nous donne pas d’informations détaillées sur le processus, par exemple, Quel est le nom du processus 575? à qui appartient le processus? et ainsi de suite.,
Si nous voulons obtenir plus de détails sur le processus, nous pouvons passer l’option « -v” à la commande de fusion pour avoir une sortie verbeuse:
root# fuser -v 22/tcp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd
En utilisant la commande de Fusion, nous pouvons également vérifier les informations de processus en cours d’exécution sur plusieurs ports TCP ou UDP h2>
dans ce court article, nous avons appris quatre utilitaires de ligne de commande linux différents avec des exemples pour comprendre les informations du processus d’écoute sur un port particulier.,
Ce sont tous des outils très puissants à avoir dans notre arsenal sur la ligne de commande Linux.