Linux : 3 commandes pour identifier le processus qui écoute sur un port particulier
Qu'avons-nous dans la boîte ?
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
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 :
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 :