Linux : 3 commandes pour identifier le processus qui écoute sur un port particulier

3 commandes pour identifier le processus qui écoute sur un port particulier

Dans ce guide, nous apprendre 3 manières différentes pour identifier le processus ou le service qui écoute sur un port particulier sous Linux. Cet article se concentre sur l’utilisation de trois outils : netstat, lsof et fuser.

Un port est un élément logique qui représente un point de communication au niveau d’une machine et ce port est associé à un processus ou à un service au niveau du système d’exploitation. Par exemple, le port « 80 » est associé au protocole « http » qui correspond à un serveur Web, généralement Apache ou Nginx (et donc à ce processus). Sans plus attendre, voyons plusieurs manières d’identifier le processus associé à un port.

1. Utiliser la commande netstat (ss)

Sous Linux, la commande netstat (network statistics) est utilisée pour afficher des informations concernant les connexions réseau, les tables de routage, les statistiques d’interface, etc. Elle est disponible sur tous les systèmes d’exploitation de type Unix, y compris Linux, ainsi que sur le système d’exploitation Windows, ce qui en fait une commande incontournable !

Au cas où elle ne serait pas installée par défaut sur votre machine, utilisez la commande suivante pour l’installer en fonction de votre distribution :

# Ubuntu / Debian
sudo apt-get install net-tools
# Rocky Linux / Alma Linux / Fedora / CentOS / RHEL
sudo dnf install net-tools
# Arch Linux
sudo pacman -S netstat-nat [Sous Arch Linux]

Une fois installé, vous pouvez l’utiliser en combinaison avec la commande grep pour trouver le processus ou le service écoutant sur un port particulier sous Linux. Voici un exemple avec une recherche sur le port « 80 » mais vous pouvez adapter avec votre numéro de port.

netstat -ltnp | grep -w ':80'

Pour le port 22 généralement associé au SSH, cela donne :

netstat -ltnp | grep -w ':22'

Dans la commande ci-dessus, les options correspondent à ceci :

  • l – indique à netstat de n’afficher que les sockets en écoute.
  • t – lui indique d’afficher les connexions TCP.
  • n – lui indique d’afficher les adresses numériques.
  • p – permets d’afficher l’ID du processus et le nom du processus.
  • grep -w – affiche la correspondance de la chaîne exacte, ici « :80 ».

Bien qu’elle fonctionne toujours, vous devez savoir que la commande netstat est dépréciée et remplacée par la commande ss sous Linux. Cette nouvelle commande peut s’utiliser sur le même principe par rapport à ce que nous cherchons à faire aujourd’hui.

Dans l’exemple ci-dessous, on peut identifier le processus « sshd » comme étant associé au port 22 sur cette machine.

2. Utilisation de la commande lsof

La commande lsof (List Open Files) est utilisée pour lister tous les fichiers ouverts sur un système Linux. Pour l’installer sur votre système, exécutez la commande ci-dessous correspondante à votre distribution (même si elle peut être intégrée par défaut selon l’environnement) :

# Ubuntu / Debian
sudo apt-get install lsof
# Rocky Linux / Alma Linux / Fedora / CentOS / RHEL
sudo yum install lsof
# Arch Linux
sudo pacman -S lsof [Sur Arch Linux]

Pour identifier le processus ou service écoutant sur un port particulier, utilisez la syntaxe ci-dessous, en adaptant le numéro de port.

lsof -i :22
Trouver un port à l'aide de la commande lsof

3. Utilisation de la commande fuser

La commande fuser affiche les PID des processus utilisant les fichiers spécifiés sous Linux, ce qui permet au final de savoir quel est le processus/service rattaché à un port.

Vous pouvez l’installer comme suit :

# Ubuntu / Debian
sudo apt-get install psmisc
# Rocky Linux / Alma Linux / Fedora / CentOS / RHEL
sudo yum install psmisc
# Arch Linux
sudo pacman -S psmisc

Vous pouvez identifier le processus/service écoutant sur un port particulier en exécutant la commande ci-dessous. Voici un exemple avec une recherche sur le port 22, en TCP.

fuser 22/tcp

Ensuite, dans la sortie de la commande, récupérez le numéro PID du processus et récupérez son nom avec la commande ps comme ceci :

ps -p 618 -o comm=

Voici un exemple :

Trouver le port et l'ID du processus sous Linux

4. Conclusion

Grâce à cet article de la boîte à tutoriels informatiques, vous êtes capable d‘identifier le processus ou le service qui se cache derrière un port en écoute sur votre machine ! Les commandes netstat (ss) et lsof sont les plus pratiques, même si l’on peut aussi utiliser fuser comme nous venons de le voir.

Ressources :

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *