Ce tutoriel vous propose une découverte complète et progressive des outils Telnet et Netcat. Vous apprendrez à quoi ils servent, leurs forces et leurs limites, comment les installer sur votre machine et comment les utiliser concrètement pour diagnostiquer et dépanner un réseau ou transférer des données.
À la fin de ce tuto, un cas pratique illustrera leur usage dans une situation réelle. L’objectif est que vous puissiez utiliser Telnet et Netcat en confiance et en sécurité, tout en sachant quand préférer des solutions plus sûres comme SSH.
- Qu’est-ce que Telnet et Netcat ?
- Installation de Telnet et Netcat
- Installation sur Fedora / CentOS / RHEL
- Utilisation de base : commandes et explications pas à pas
- Exemples pratiques et cas d’usage détaillés
- Options avancées, variantes et bonnes pratiques
- Dépannage et conseils pratiques
- Exemples concrets : scripts et automatisation
- Atelier pratique : Telnet et Netcat sur votre réseau local
- Scripts prêts à l’emploi
- Ce qu’il ne faut pas faire : abus à éviter
- Quand utiliser Telnet ou Netcat, et quoi retenir
Qu’est-ce que Telnet et Netcat ?
Comprendre Telnet
Telnet est un protocole historique et un client qui permettent d’établir une connexion texte vers un hôte distant sur un port donné. À l’origine, Telnet servait à ouvrir des sessions terminal à distance : on se connectait à une machine distante et on utilisait un shell ou une application texte comme si l’on était devant la machine.
Aujourd’hui, Telnet est surtout utilisé comme outil simple pour tester la connectivité TCP vers un port et pour échanger manuellement des données textuelles avec un service (par exemple envoyer une requête HTTP basique pour voir la réponse).
Telnet est basé sur TCP et inclut une négociation d’options propre au protocole Telnet.
Ce comportement le rend parfois moins « brut » que d’autres outils lorsqu’on teste des services qui ne comprennent que du texte simple. Telnet est simple à utiliser, mais il est non chiffré et donc inadapté pour des connexions contenant des informations sensibles.
TCP, ou Transmission Control Protocol, est un protocole utilisé sur Internet pour envoyer des données de manière fiable entre deux ordinateurs. Il fonctionne comme une conversation : il s’assure que les messages envoyés arrivent complets et dans le bon ordre. Si une partie des données se perd en chemin, TCP demande qu’elle soit renvoyée. C’est ce protocole qui permet, par exemple, de charger correctement une page web ou d’envoyer un email sans perdre d’informations.
Comprendre Netcat
Netcat, souvent appelé nc, est un outil qui sert de « couteau suisse » pour les connexions réseau. Netcat peut établir des connexions TCP ou UDP, écouter sur un port en mode serveur, transférer des fichiers, réaliser des scans de ports basiques, et relayer des flux. Netcat se contente de sockets bruts, ce qui le rend extrêmement flexible pour automatiser des interactions réseau ou pour relier des flux entre processus et sockets.
Il existe plusieurs implémentations de Netcat : netcat-traditional, netcat-openbsd et ncat (fourni par Nmap). Chaque variante propose un jeu d’options légèrement différent. Certaines variantes ont des fonctionnalités avancées comme le support SSL, d’autres sont volontairement plus minimalistes.
Une socket est comme une prise ou un point de connexion sur un ordinateur qui permet à des programmes de communiquer entre eux, soit sur le même ordinateur, soit via Internet. C’est grâce aux sockets que des applications peuvent envoyer et recevoir des données : un programme « branche » sa socket à celle d’un autre pour échanger des informations, un peu comme passer des messages via un tuyau entre deux ordinateurs.
Différences clés entre Telnet et Netcat
Telnet est orienté session texte et inclut la négociation Telnet. Netcat est orienté « socket brut » et offre plus de flexibilité (TCP/UDP, écoute, redirection, transferts). On utilisera Telnet quand l’objectif est d’échanger manuellement des lignes de texte (diagnostic SMTP, HTTP simple), et Netcat quand on souhaite automatiser, transférer des fichiers, écouter un port ou relier des flux.
Avantages généraux
Telnet permet d’établir une connexion rapide et de voir exactement la réponse textuelle d’un service. Netcat permet des scénarios avancés comme l’écoute persistante, le transfert de fichiers ou le simple tunneling de flux, et fonctionne avec TCP et UDP.
Limites importantes
Telnet ne chiffre rien et transmet en clair identifiants et données : il ne doit pas être utilisé pour administrer des machines en production via internet. Netcat peut être très puissant mais sa flexibilité en fait un outil pouvant être mal utilisé : certaines options permettent d’exécuter des commandes distantes (selon la variante), ce qui pose des risques de sécurité si l’on n’est pas prudent. Dans la plupart des cas, préférez SSH pour l’administration distante et des outils chiffrés pour les transferts sensibles.
Installation de Telnet et Netcat
Avant de les installer, identifiez votre système (distribution Linux, macOS ou Windows). Les commandes suivantes couvrent les cas les plus courants. Exécutez-les depuis un compte qui dispose des droits d’installation.
Installation sur Debian / Ubuntu (exemples)
Étape 1 : mettre à jour la liste des paquets.
Tapez : sudo apt update
Explication : cela récupère la liste la plus récente des paquets disponibles.
Étape 2 : installer Telnet si nécessaire.
Tapez : sudo apt install telnet -y
Explication : installe le client Telnet permettant d’exécuter la commande telnet.
Étape 3 : installer Netcat.
Tapez : sudo apt install netcat-openbsd -y
Explication : netcat-openbsd est l’implémentation courante sur Debian/Ubuntu. Si vous avez besoin d’une autre variante, vous pouvez installer netcat-traditional à la place.
Étape 4 : vérifier les installations.
Tapez : telnet --version ou telnet (pour vérifier) et nc -h ou nc --version.
Explication : si la commande répond, l’installation a réussi. Dans certains cas la version de telnet n’affiche pas d’option –version ; vous pouvez taper man telnet pour vérifier la page de manuel.
Installation sur Fedora / CentOS / RHEL
Étape 1 : mettre à jour.
Tapez : sudo dnf update ou sudo yum update selon la version.
Étape 2 : installer Telnet.
Tapez : sudo dnf install telnet -y ou sudo yum install telnet -y.
Étape 3 : installer Netcat.
Tapez : sudo dnf install nmap-ncat -y ou sudo dnf install netcat -y selon disponibilité.
Explication : sur Fedora/RHEL, ncat (inclus avec nmap) est souvent préféré et offre des fonctionnalités supplémentaires.
Installation sur macOS
Si Homebrew est installé, procédez ainsi :
Étape 1 : installer Netcat (ncat).
Tapez : brew install nmap
Explication : l’installation de nmap fournit ncat, très pratique et moderne.
Étape 2 : installer Telnet si nécessaire.
Tapez : brew install inetutils
Explication : macOS modernes n’incluent plus Telnet par défaut, et la formule inetutils apporte des outils réseau dont telnet. Le chemin peut varier ; consultez le message post-installation pour l’emplacement exact si la commande telnet n’est pas dans votre PATH par défaut.
Étape 3 : vérifier.
Tapez : nc --version ou ncat --version, et man telnet.
Pour en savoir plus, consultez notre Tutoriel complet sur nmap.
Installation sur Windows
Sur Windows 10/11, le client Telnet est parfois désactivé par défaut.
Étape 1 : activer le client Telnet via les fonctionnalités Windows.
Option A (interface graphique) : Ouvrez « Activer ou désactiver des fonctionnalités Windows », cochez « Client Telnet », puis validez.
Option B (terminal administrateur) : exécutez : dism /online /Enable-Feature /FeatureName:TelnetClient
Explication : DISM active la fonctionnalité intégrée.
Étape 2 : obtenir Netcat / ncat.
Option A : installer Nmap pour Windows depuis le site officiel ; ncat est inclus dans l’installateur.
Option B : installer via le gestionnaire de paquets Chocolatey : choco install nmap -y (nécessite Chocolatey installé et privilégies administrateurs).
Explication : ncat est généralement distribué avec Nmap et fournit une bonne version de Netcat.
Étape 3 : vérifier.
Tapez dans PowerShell : ncat --version ou nc --help selon ce que vous avez installé.
Utilisation de base : commandes et explications pas à pas
Avant d’exécuter des commandes, gardez en tête que l’utilisation de ces outils sur des réseaux qui ne vous appartiennent pas peut être surveillée ou interdite. Utilisez-les sur vos machines, votre réseau, ou avec l’autorisation explicite du propriétaire.
Se connecter à un service texte avec Telnet
Nous allons vérifier qu’un service écoute sur un port. Par exemple, on peut tester un serveur HTTP sur le port 80.
Étape 1 : lancer la connexion.
Tapez : telnet example.com 80
Explication : vous ouvrez une connexion TCP vers example.com sur le port 80. Si la connexion s’établit, le prompt passe en mode où vous pouvez taper des données qui seront transmises telles quelles.
Étape 2 : envoyer une requête HTTP simple.
Tapez exactement : GET / HTTP/1.1 puis appuyez sur Entrée. Tapez ensuite : Host: example.com puis deux fois Entrée.
Explication : vous envoyez une requête HTTP manuelle. La double ligne vide indique la fin des en-têtes. Vous verrez la réponse HTTP brute du serveur. C’est très utile pour diagnostiquer le comportement d’un serveur web.
Étape 3 : quitter Telnet.
Tapez : Ctrl+] puis à l’invite : quit
Explication : la combinaison Ctrl+] vous ramène au prompt telnet local pour fermer proprement la session.
Se connecter et transférer avec Netcat (nc)
Nous allons cette fois établir une connexion brute TCP et envoyer des données.
Exemple 1 — connexion simple à un service HTTP.
Étape 1 : tapez : nc example.com 80
Étape 2 : tapez la même requête HTTP que pour Telnet ou utilisez : printf 'GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n' | nc example.com 80
Explication : la version avec printf permet d’automatiser la requête et de fermer immédiatement la connexion.
Exemple 2 — écouter sur un port (serveur simple).
Sur la machine A (réceptrice) : nc -l 1234
Sur la machine B (client) : nc machineA_ip 1234
Explication : la machine A écoute sur le port 1234 ; la machine B se connecte et tout ce qui est tapé est envoyé et affiché de part et d’autre. Selon la variante de nc, l’option d’écoute peut s’écrire nc -l -p 1234 ; si nc répond qu’il manque une option, essayez la deuxième forme.
Transférer un fichier avec Netcat
Maintenant, nous allons envoyer un fichier d’une machine à une autre sur le réseau local, sans chiffrement.
Récepteur (machine A) : nc -l 1234 > fichier_recu.bin
Expéditeur (machine B) : nc machineA_ip 1234 < fichier_a_envoyer.bin
Explication : la machine A redirige le flux reçu vers un fichier, la machine B envoie le contenu du fichier sur le socket. Le transfert est rapide et simple mais non chiffré. Pour la compression en transmission, on peut envoyer une archive tar compressée en utilisant tar -czf – dossier | nc … et côté réception nc ... | tar -xzf -.
Scan de ports basique avec Netcat
Vous pouvez aussi vérifier quels ports sont ouverts sur une cible.
Commande : nc -zv host.example.com 20-1024
Explication : l’option -z demande de ne pas établir de flux de données (mode scan), -v active le mode verbeux. Selon la version de nc l’option -z peut être différente ; adaptez selon la variante installée. Cette méthode est utile pour un test rapide mais n’est pas un scanner complet et discret comme nmap.

Des formations informatique pour tous !
Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…
Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.
Découvrez mes formations Qui suis-je ?Exemples pratiques et cas d’usage détaillés
Cas pratique 1 : diagnostiquer un serveur web qui ne répond pas
Le contexte : votre site interne hébergé sur 192.168.1.10 ne répond pas depuis une autre machine du réseau.
Étape 1 : vérifier la connectivité réseau.
Tapez : ping 192.168.1.10
Explication : si le ping échoue, identifiez un problème réseau avant tout.
Étape 2 : vérifier l’ouverture du port HTTP.
Tapez : nc -vz 192.168.1.10 80
Explication : nc tentera d’établir une connexion. Si le port est fermé vous obtiendrez un message d’échec ; si le port est ouvert vous verrez la connexion réussie.
Étape 3 : faire une requête manuelle pour inspecter la réponse.
Tapez : printf 'GET / HTTP/1.1\r\nHost: 192.168.1.10\r\nConnection: close\r\n\r\n' | nc 192.168.1.10 80
Explication : vous pourrez lire l’en-tête HTTP renvoyé par le serveur et diagnostiquer erreurs 500, 404, redirections, etc.
Étape 4 : vérifier le log côté serveur.
Explication : après avoir confirmé que le port est ouvert et que le serveur répond mal, consultez les logs du serveur web (ex. /var/log/nginx/error.log ou /var/log/apache2/error.log) pour remonter la cause.
Cas pratique 2 : tester un serveur SMTP
Le contexte : vérification d’un serveur de messagerie local.
Étape 1 : établir une connexion sur le port 25 avec Telnet.
Tapez : telnet smtp.votredomaine.local 25
Explication : la plupart des serveurs SMTP répondent par une bannière. Vous pouvez envoyer manuellement HELO ou EHLO pour vérifier la conversation.
Étape 2 : envoyer une commande HELO.
Tapez : HELO votredomaine.local puis Entrée.
Explication : le serveur doit répondre par un code 250 et des informations sur ses extensions.
Étape 3 : quitter proprement.
Tapez : QUIT puis Entrée, ou Ctrl+] puis quit si vous utilisez telnet interactif.
Avertissement : l’envoi de mails via SMTP de manière manuelle est utile pour le diagnostic, mais n’utilisez pas ces méthodes pour relayer du spam ou pour des tests sur des serveurs tiers sans accord.
Cas pratique 3 : transférer un dossier compressé entre deux postes
Le contexte : transférer un dossier depuis votre portable vers votre serveur sur le réseau local.
Récepteur (serveur) : nc -l 4444 | tar -xzf - -C /chemin/de/destination
Expéditeur (portable) : tar -czf - /chemin/du/dossier | nc serveur_ip 4444
Explication : la commande tar compresse le dossier en flux standard, netcat envoie ce flux au serveur, qui le décompresse directement. C’est simple et pratique sur un réseau privé.
Options avancées, variantes et bonnes pratiques
Les options courantes que vous rencontrerez incluent -l pour écouter, -p pour préciser un port (selon la variante), -v pour verbeux, -z pour scan sans I/O, -u pour UDP et -n pour éviter la résolution DNS. Certaines implémentations ajoutent -k pour forcer l’écoute après une connexion, ou –ssl/–ssl-cert pour chiffrer la session (ncat). Il est important de lire la page de manuel : man nc ou man ncat pour connaître le détail exact de votre version.
Tableau récapitulatif des commandes Telnet
| Commande | Description | Exemple |
|---|---|---|
| telnet [hôte] [port] | Se connecter à un serveur sur un port spécifique | telnet example.com 80 |
| open [hôte] [port] | Ouvrir une nouvelle connexion à un hôte et port | open example.com 23 |
| close | Fermer la connexion active | close |
| quit | Quitter Telnet | quit |
| status | Afficher l’état de la connexion Telnet | status |
Tableau récapitulatif des commandes Netcat (nc)
| Commande | Description | Exemple |
|---|---|---|
| nc [hôte] [port] | Se connecter à un hôte sur un port spécifique | nc example.com 80 |
| nc -l -p [port] | Écouter les connexions entrantes sur un port | nc -l -p 1234 |
| nc -v [hôte] [port] | Connexion avec affichage des détails (verbose) | nc -v example.com 22 |
| nc -z [hôte] [ports] | Scanner rapidement les ports ouverts | nc -z example.com 20-25 |
| nc -u [hôte] [port] | Se connecter en UDP au lieu de TCP | nc -u example.com 53 |
Variantes : netcat-openbsd, netcat-traditional et ncat
netcat-openbsd est souvent la version par défaut sur les distributions modernes ; elle est sobre et sûre mais moins permissive sur certaines options dangereuses. netcat-traditional est plus permissive et peut proposer -e pour exécuter un programme sur connexion, fonctionnalité qui peut poser un risque de sécurité. ncat, fourni par Nmap, offre des fonctions avancées comme SSL/TLS et options de proxy. Choisissez la variante adaptée à votre usage en gardant la sécurité à l’esprit.
Alternatives et compléments : socat et SSH
Socat est un outil similaire à Netcat mais plus riche et plus sécurisé dans certaines configurations. Pour des besoins d’administration distante ou de transfert sécurisé, privilégiez SSH plutôt que Telnet et Netcat non chiffrés. SSH permet tunneling, chiffrement et authentification robuste.
Sécurité et éthique
N’utilisez jamais Telnet pour des connexions contenant des mots de passe sur des réseaux non sécurisés. Évitez d’exposer un service Netcat sur Internet sans protection.
Sur un serveur de production, n’autorisez pas l’utilisation de Netcat avec des options qui exécutent des commandes distantes (comme -e) tant que vous n’avez pas clairement évalué les risques. Respectez la législation et la politique d’utilisation acceptable du réseau sur lequel vous opérez.
Dépannage et conseils pratiques
Si telnet ou nc ne sont pas trouvés, revérifiez l’installation et le PATH. Sur macOS, Homebrew peut installer des binaires dans /usr/local/bin ou /opt/homebrew/bin ; adaptez votre PATH si nécessaire. Sur Windows, vérifiez que vous avez correctement activé la fonctionnalité Telnet ou installé Nmap/ncat.
Si la connexion est refusée
La réponse « Connection refused » signifie que rien n’écoute sur le port ciblé, ou qu’un firewall bloque la connexion. Vérifiez sur la machine distante que le service est bien démarré et que le firewall (ufw, iptables, firewalld) autorise le port. Exemple : sudo ufw status pour UFW.
Si la connexion est lente ou instable
Un réseau congestionné ou un problème de routage peut causer de l’instabilité. Utilisez ping, traceroute (tracert sur Windows) pour localiser les points défaillants.
Logs et audit
Pour des diagnostics approfondis, combinez Telnet/Netcat avec des outils de capture comme tcpdump ou Wireshark (Sniffing) afin de voir les paquets échangés. Cela permet d’identifier problèmes de protocole ou d’encodage.
Exemples concrets : scripts et automatisation
Exemple : script Bash pour scanner une liste de ports avec Netcat
Pour tester rapidement plusieurs ports sur une cible depuis un poste d’administration :
Étape 1 : créer un script minimal.
Contenu (exécutez-le après l’avoir enregistré) :for port in 22 80 443 3306; do nc -z -v -w 2 cible.example.com $port && echo "Port $port ouvert" || echo "Port $port fermé"; done
Explication : la boucle teste chaque port et affiche l’état. L’option -w fixe un timeout pour éviter d’attendre indéfiniment.
Exemple : vérifier la page d’accueil d’un service HTTP via Netcat
Commande : printf 'GET / HTTP/1.1\r\nHost: votresite.local\r\nConnection: close\r\n\r\n' | nc -w 3 votresite.local 80 | head -n 20
Explication : la sortie est limitée à 20 lignes grâce à head pour lire rapidement les en-têtes et détecter une erreur.
Atelier pratique : Telnet et Netcat sur votre réseau local
Faisons un récapitulatif de tout ce que nous avons vu précédemment. Mais avant cela :
- Assurez-vous d’avoir deux machines (ordinateur fixe, portable, ou machine virtuelle).
- Machine A : servira de « serveur ».
- Machine B : servira de « client ».
- Installez Telnet et Netcat comme expliqué précédemment sur les deux machines.
- Notez l’adresse IP locale de la Machine A (sous Linux/macOS :
ip aouifconfig; sous Windows :ipconfig).
Étape 1 : Tester la connectivité avec Telnet
L’objectif est de vérifier qu’une machine peut atteindre un service HTTP ou un port réseau.
- Lancez un serveur web léger sur la Machine A (exemple avec Python 3) :
python3 -m http.server 8080Cela démarre un petit serveur HTTP sur le port 8080. - Depuis la Machine B, connectez-vous avec Telnet :
telnet [IP_Machine_A] 8080 - Une fois connecté, tapez :
GET / HTTP/1.1 Host: [IP_Machine_A]Puis appuyez deux fois sur Entrée. - Vous verrez la réponse HTML renvoyée par le mini-serveur Python.
Étape 2 : Chat simple avec Netcat
Nous allons mettre en place une communication directe entre deux machines :
- Sur la Machine A, écoutez sur le port 1234 :
nc -l 1234 - Sur la Machine B, connectez-vous :
nc [IP_Machine_A] 1234 - Tapez du texte dans chaque terminal. Vous verrez vos messages apparaître en direct de l’autre côté.
Étape 3 : Transférer un fichier avec Netcat
Maintenant, envoyons un fichier d’une machine à l’autre :
- Sur la Machine A (réception), exécutez :
nc -l 4444 > fichier_recu.txt - Sur la Machine B (envoi), tapez :
nc [IP_Machine_A] 4444 < fichier_source.txt - Vérifiez sur la Machine A : le fichier
fichier_recu.txtest bien arrivé.
Scanner un port avec Netcat
Vérifier si un service est actif sur un port :
- Depuis la Machine B, exécutez :
nc -zv [IP_Machine_A] 1-1024 - Netcat vous affichera les ports ouverts ou fermés. Vous devriez voir le port 8080 ouvert si le serveur web Python est encore en marche.
Scripts prêts à l’emploi
Script Bash – Scanner rapide de ports
#!/bin/bash
# scanner.sh
# Usage: ./scanner.sh 192.168.1.10
host=$1
for port in 22 80 443 8080 3306; do
nc -z -v -w2 $host $port \
&& echo "Port $port ouvert" \
|| echo "Port $port fermé"
doneScript Bash — Transfert de dossier compressé
# Sur la machine réceptrice
nc -l 5000 | tar -xzf -
# Sur la machine émettrice
tar -czf - dossier_a_envoyer | nc [IP_Machine_A] 5000Script PowerShell (Windows) — Test de connexion simple
# Test de connexion TCP sur un port
param(
[string]$ip,
[int]$port
)
try {
$socket = New-Object System.Net.Sockets.TcpClient($ip, $port)
Write-Output "Connexion réussie sur $ip:$port"
$socket.Close()
}
catch {
Write-Output "Impossible de se connecter sur $ip:$port"
}Ces exercices vous permettront de pratiquer Telnet et Netcat dans un cadre sécurisé et pédagogique.
Ce qu’il ne faut pas faire : abus à éviter
Ne tentez pas d’utiliser Telnet ou Netcat pour : compromettre des systèmes, exécuter des commandes à distance sur des machines sans autorisation, contourner des protections, ou lancer des attaques.
Fournir des instructions pour contourner des systèmes ou obtenir un accès non autorisé est illégal et contraire à l’éthique. Si l’objectif est la sécurité ou l’audit, travaillez toujours avec l’accord explicite du propriétaire du réseau et dans un cadre légal.
Quand utiliser Telnet ou Netcat, et quoi retenir
Telnet et Netcat restent des outils extrêmement utiles pour l’administration et le diagnostic réseau. Telnet est pratique pour interagir manuellement avec des services textuels et vérifier des réponses, tandis que Netcat offre une palette d’outils pour écouter, transférer et relier des flux réseau. Leur simplicité est à la fois leur force et leur faiblesse : rapides et universels, mais la plupart des usages sensibles doivent être faits via des solutions chiffrées (SSH, TLS).
Installez-les en respectant votre système, utilisez les variantes adaptées et privilégiez toujours la sécurité. Entraînez-vous sur votre propre réseau ou dans un laboratoire dédié avant d’appliquer ces techniques en production.
Pour approfondir, consultez les pages de manuel man telnet, man nc, man ncat sur votre système. Explorez ensuite des outils complémentaires comme SSH, socat et nmap pour des analyses plus riches et sécurisées.

