
Niveau de difficulté | Facile |
Privilèges de la racine | Oui |
Exigences | Terminal Linux ou Unix |
Catégorie | Utilitaires de réseau |
Conditions préalables | Commandes lsof/ss/netstat |
Compatibilité avec les systèmes d'exploitation | *BSD -Linux-macOS-Unix-WSL |
Temps de lecture estimé | 5 minutes |
Comment vérifier si un port est en cours d'utilisation dans
Pour vérifier les ports et les applications en écoute sous Linux :
- Ouvrez une application de terminal, c'est-à-dire une invite shell.
- Exécutez l'une des commandes suivantes sur Linux pour voir les ports ouverts :
$ sudo lsof -i -P -n | grep LISTEN
$ sudo netstat -tulpn | grep LISTEN
$ sudo ss -tulpn | grep LISTEN
$ sudo lsof -i:22 ## see a specific port such as 22 ##
$ sudo nmap -sTU -O IP-address-Here - Pour la dernière version de Linux, utilisez la commande ss. Par exemple, ss -tulw
Voyons les commandes et leurs résultats en détail.
Option #1 : commande lsof
La syntaxe est la suivante :
$ sudo lsof -i -P -n
$ sudo lsof -i -P -n | grep LISTEN
$ doas lsof -i -P -n | grep LISTEN # OpenBSD #
Exemples de résultats :

Fig.01 : Vérifier les ports d'écoute et les applications avec la commande lsof
sshd 85379 root 3u IPv4 0xffff80000039e000 0t0 TCP 10.86.128.138:22 (LISTEN)
- sshd est le nom de l'application.
- 10.86.128.138 est l'adresse IP à laquelle l'application sshd se lie (LISTEN)
- 22 est le port TCP qui est utilisé (LISTEN)
- 85379 est l'ID du processus sshd
Affichage de la liste des services du réseau Internet
Le fichier /etc/services est un fichier texte qui établit une correspondance entre les noms textuels conviviaux des services Internet et les numéros de port et types de protocole qui leur sont attribués. Utilisez la commande cat ou la commande more/less pour le visualiser :
$ less /etc/services
Un exemple de fichier :
tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp 21/tcp fsp 21/udp fspd ssh 22/tcp # SSH Remote Login Protocol telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver whois 43/tcp nicname tacacs 49/tcp # Login Host Protocol (TACACS) tacacs 49/udp domain 53/tcp # Domain Name Server domain 53/udp
Chaque ligne décrit un service, et est de la forme :
#service-name port/protocol [aliases ...] ssh 22/tcp # SSH Remote Login Protocol time 37/tcp timserver
Option #2 : netstat ou commande ss
Vous pouvez vérifier les ports d'écoute et les applications avec netstat comme suit.
Syntaxe de Linux netstat
Exécutez la commande netstat avec la commande grep pour filtrer les ports en état LISTEN :
$ netstat -tulpn | grep LISTEN
La commande netstat est dépréciée depuis un certain temps sous Linux. Par conséquent, vous devez utiliser la commande ss comme suit :
$ sudo ss -tulw
$ sudo ss -tulwn
$ sudo ss -tulwn | grep LISTEN

Où, les options de la commande ss sont les suivantes :
- -t : Afficher uniquement les sockets TCP sous Linux
- -u : Afficher uniquement les sockets UDP sous Linux
- -l : Montre les sockets en écoute. Par exemple, le port TCP 22 est ouvert par le serveur SSHD.
- -p : Liste des noms de processus qui ont ouvert des sockets
- -n Ne pas résoudre les noms de service, c'est-à-dire ne pas utiliser le DNS.
Related : Linux découvre quel processus est à l'écoute sur un port
Syntaxe netstat de FreeBSD/macOS (OS X)
La syntaxe est la suivante :
$ netstat -anp tcp | grep LISTEN
$ netstat -anp udp | grep LISTEN
Syntaxe netstat d'OpenBSD
$ netstat -na -f inet | grep LISTEN
$ netstat -nat | grep LISTEN
Option #3 : commande nmap
La syntaxe est la suivante :
$ sudo nmap -sT -O localhost
$ sudo nmap -sU -O 192.168.2.13 ##[ list open UDP ports ]##
$ sudo nmap -sT -O 192.168.2.13 ##[ list open TCP ports ]##
Exemples de résultats :

Fig.02 : Détermine les ports qui écoutent les connexions TCP en utilisant nmap
$ sudo nmap -sTU -O 192.168.2.13
Remarque concernant les utilisateurs de Windows
Vous pouvez vérifier l'utilisation des ports à partir du système d'exploitation Windows en utilisant la commande suivante :
$ netstat -bano | more
$ netstat -bano | grep LISTENING
$ netstat -bano | findstr /R /C:[LISTEING]
Conclusion
Cette page explique la commande permettant de déterminer si un port est utilisé sur un serveur Linux ou Unix-like. Pour plus d'informations, voir la page de la commande nmap et de la commande lsof. en ligne ici ou en tapant la commande man comme suit :
$ man lsof
$ man ss
$ man netstat
$ man nmap
$ man 5 services