Comment utiliser Telnet pour vérifier si un port est ouvert ou non ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons utiliser Telnet pour un usage bien précis : tester si un port est ouvert ou non sur un serveur distant ou sur la machine locale. Car oui, même si Telnet peut être utilisé pour effectuer de l'administration à distance, il est aussi très utile pour tester rapidement si un port est ouvert sur une machine distante. C'est une méthode connue depuis plusieurs dizaines d'années : n'est-ce pas ? Sinon, demandez à vos collègues ! 😉
En guise d'alternative, il y a aussi une commande PowerShell que nous allons découvrir dans un futur article, ainsi que la possibilité d'utiliser d'autres outils comme nmap.
Même si je vous déconseille d'utiliser Telnet pour l'administration à distance, afin de prioriser plutôt le SSH, vous pouvez tout à fait l'utiliser pour cet usage !
Envie de savoir comment utiliser Telnet pour tester un port ? La réponse ci-dessous.
II. Tester un port avec Telnet sous Windows
Si vous travaillez sur Windows, il convient d'installer le client Telnet sur votre machine car c'est une fonctionnalité facultative. Que ce soit sur Windows 11, Windows 10 ou Windows Server, vous avez le choix entre l'installation par l'interface graphique ou via la ligne de commande.
Pour effectuer l'installation avec DISM, utilisez cette commande :
dism /online /Enable-Feature /FeatureName:TelnetClient
Sinon, pour utiliser PowerShell, utilisez cette commande :
Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient
Ensuite, il ne reste plus qu'à utiliser la syntaxe suivante :
telnet <nom d'hôte ou adresse IP> <port à tester>
Si l'on veut vérifier si la machine "192.168.14.131" est en écoute sur le port 443 (HTTPS), on utilisera cette commande :
telnet 192.168.14.131 443
Si la machine retourne le message "Connexion à 192.168.14.131...Impossible d’ouvrir une connexion à l’hôte, sur le port 443: Échec lors de la connexion", c'est qu'elle n'est pas en écoute sur ce port !
Faisons le même test sur le port 80 (HTTP), vers la même adresse IP : le résultat sera-t-il différent ?
telnet 192.168.14.131 80
Cette fois-ci, le curseur continue de clignoter et je n'ai pas de message d'erreur ! Ceci signifie que le port 80 est ouvert sur la machine distante ! En effet, elle héberge un serveur Apache2 dans sa configuration par défaut, donc il écoute uniquement sur le port 80.
Il faut retenir que :
- Si le port est fermé, le message "Impossible d'ouvrir une connexion à l'hôte, sur le port..." s'affiche rapidement
- Si le port est ouvert, le curseur clignote comme si Telnet était en attente
III. Tester un port avec Telnet sous Linux
En principe, sous Linux, le client Telnet est déjà installé donc on peut directement l'utiliser. Toutefois, si ce n'est pas le cas, vous pouvez l'installer facilement. Voici la commande pour Debian et Ubuntu :
apt-get install telnet
Ensuite, il suffit de l'utiliser sur le même principe ! En me connectant directement sur la machine avec l'adresse IP "192.168.14.131", qui tourne sur Debian, je peux tester le port en local. On peut reproduire le même exercice, à savoir tester les ports 443 et 80.
telnet 127.0.0.1 443
Le client Telnet fonctionne sur le même principe sous Windows et Linux, ce n'est que le message dans la console qui est différent. Lorsque le port est fermé, comme ici avec le port 443, ce contenu s'affiche :
Trying 127.0.0.1... telnet: Unable to connect to remote host: Connexion refusée
À l'inverse, si le port est ouvert, on a toujours un curseur qui clignote avec cette fois-ci, la possibilité d'écrire. Vous pouvez saisir "quit" ou "exit" pour quitter Telnet. Dans la console, le code source de la page sera affiché : il s'agit du contenu récupéré en interrogeant le serveur sur le port 80.
telnet 127.0.0.1 80
IV. Conclusion
A éviter pour l'administration de machines puisqu'il laisse transiter en clair l'identifiant et le mot de passe, le protocole Telnet est tout de même à connaître : la preuve avec cette astuce où l'on voit qu'il peut servir à tester un port facilement, que ce soit sur la machine locale ou une machine distante.
Hello,
Pourquoi pas faire le lien avec l’article sur Netcat, qui lui peut servir à tester des ports aussi bien en TCP et en UDP, alors que Telnet ne peut pas tester les ports qui sont ouverts en UDP ?
Sinon il y a « test-netconnection » sur powershell.
Pas besoin d’installer de module.
J’étais pratiquant de telnet avec cette technique depuis 20 ans car très pratique.
Mais avec l’arrivée de la commande Powershell c’est top, surtout que Telnet n’est plus de base.