La commande `ss` signifie “**s**ocket **s**tatistics” ou statistiques de socket en français. L'outil est conçu pour fournir des informations détaillées sur les sockets par exemple :
- Vérifier que le service apache2 (serveur HTTP) est bien en écoute sur le port TCP 80.
- Identifier les ports ouverts pour identifier les services actuellement installés sur la machine.
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Vous devez disposer des privilèges "*root*" avec `su` ou avec `sudo`.</span>
Pour afficher tous les ports ouverts, vous pouvez exécuter :
```shell
sudo ss -tulnp
```
Pour filtrer les résultats sur un port spécifique, utilisez **grep**. Par exemple pour afficher le port "**22**" SSH :
```shell
sudo ss -tulnp | grep :22
```
Voici la présentation des options utilisées et un exemple de sortie de commande :
- `-t` : affiche les connexions TCP.
- `-u` : affiche les connexions UDP.
- `-l` : liste les ports en écoute (listening).
- `-n` : force l’affichage des adresses et des ports en format numérique (pas de traduction)
- `-p` : affiche le PID et le nom du processus.
![[_png-kb-lnx-lister-ports-tcp-udp-ss.png]]
# Conclusion
Nous vous recommandons d'utiliser la commande `ss` car cette commande est l'approche la plus moderne. En alternative, la commande `lsof` (cf. [[kb-lnx-lister-ports-tcp-udp-lsof|Lister les ports ouverts avec lsof]]) peut fournir le même résultat en s'appuyant sur l'état des fichiers ouverts. La commande `netstat` est encore utilisée, mais elle est dépréciée et à éviter (cf. [[kb-lnx-lister-ports-tcp-udp-netstat|Lister les ports ouverts avec netstat]]).
## Références
- IT-CONNECT : [Lister les ports en écoute sous Linux avec lsof, netstat et ss](https://www.it-connect.fr/lister-les-ports-en-ecoute-sous-linux-avec-lsof-netstat-et-ss/).
- Liste de distribution Debian : Message des développeurs [net-tools fututre](https://lists.debian.org/debian-devel/2009/03/msg00780.html) (2009).