Pourquoi telnet a disparu
zsh: command not found: telnet
Apple a retiré telnet, avec ftp, dans macOS High Sierra (10.13). Rien n'est cassé sur votre Mac et aucun réglage ne le remet. Vous avez deux options, et la bonne dépend de ce que vous vouliez en faire.
- Vérifier qu'un port est ouvert, pour un serveur web, un serveur de messagerie ou SSH : utilisez
nc, déjà présent sur le Mac. - Vous connecter à un équipement qui parle Telnet, comme un switch, un routeur ou un serveur de consoles : installez le client Telnet.
Tester un port avec nc
La plupart des gens tapent telnet hôte 443 juste pour voir si un port répond. nc le fait mieux, car il le dit clairement puis se termine :
nc -vz example.com 443
Connection to example.com port 443 [tcp/https] succeeded!
Un port fermé renvoie Connection refused, et un port bloqué par un pare-feu ne répond pas avant le délai d'attente. Ajoutez -G 5 pour abandonner après 5 secondes. Les deux cas ont leur guide : connection refused et connection timed out.
Pour taper dans un protocole texte, comme SMTP sur le port 25, retirez -z. -c envoie CR et LF en fin de ligne, ce qu'attendent beaucoup de serveurs :
nc -c mail.example.com 25
Pour un équipement qui négocie les options Telnet, ajoutez -t pour que nc y réponde. Cela suffit pour un coup d'œil, mais un vrai client gère correctement l'écho et la taille du terminal.
Installer telnet avec Homebrew
Avec Homebrew installé :
brew install telnet
C'est le client qu'Apple fournissait autrefois. Le paquet inetutils contient aussi un telnet, mais il entre en conflit avec celui-ci : choisissez-en un seul. Connectez-vous ensuite avec l'adresse et, si ce n'est pas 23, le port :
telnet 192.0.2.10 23
Trying 192.0.2.10...
Connected to 192.0.2.10.
Escape character is '^]'.
Pour quitter, appuyez sur Ctrl-], tapez quit et appuyez sur Entrée. Ctrl-C ne marche en général pas, car il est envoyé à l'équipement.
Quand Telnet reste nécessaire
Telnet envoie tout en clair, mots de passe compris. N'importe qui sur le chemin réseau peut le lire. Il garde de vrais usages :
- Switchs, routeurs, imprimantes et PDU sans SSH, ou avec SSH désactivé en sortie d'usine.
- Serveurs de consoles qui exposent chaque port série comme un port Telnet, par exemple 2001, 2002 et ainsi de suite.
- Matériel de laboratoire, simulateurs réseau et anciens systèmes industriels.
- Services texte comme les BBS et les jeux MUD.
Utilisez-le sur un réseau de confiance, comme un VLAN d'administration ou un câble direct, et jamais à travers Internet.
Passer un équipement de Telnet à SSH
Si l'équipement sait faire du SSH, activez-le et coupez Telnet. Sur Cisco IOS par exemple, après avoir créé un utilisateur local :
configure terminal
ip domain-name example.com
crypto key generate rsa modulus 2048
ip ssh version 2
line vty 0 4
login local
transport input ssh
end
write memory
Testez SSH depuis une deuxième fenêtre avant de fermer la session Telnet. Pour les machines Linux qui font encore tourner un serveur Telnet, voyez comment activer SSH sur Ubuntu, puis supprimez le paquet du serveur telnet.
Problèmes courants
Connection refused. L'équipement n'accepte pas Telnet sur ce port. Il peut être désactivé, ou autorisé seulement depuis un réseau d'administration.- Connecté, puis plus rien. Appuyez sur Entrée. Certains équipements n'affichent l'invite de connexion qu'après une touche.
- Caractères bizarres ou menus cassés. L'équipement utilise un autre jeu de caractères, comme ISO-8859-1, ou attend un autre type de terminal. Voir unknown terminal type.
- Retour arrière affiche
^?. L'équipement attend Ctrl-H pour effacer. Appuyez sur Ctrl-H à la place, ou réglez la touche d'effacement sur l'équipement.
Questions
Pourquoi telnet n'est-il pas sur mon Mac ?
Apple a retiré telnet et ftp de macOS à partir de High Sierra (10.13), en 2017, car tous deux transmettent tout en clair. La commande n'est pas cachée : elle n'existe plus.
Comment installer telnet sur Mac ?
Installez Homebrew, puis lancez brew install telnet. Le paquet inetutils contient aussi une commande telnet, mais les deux sont en conflit : n'en installez qu'un.
Que peut-on utiliser à la place de telnet pour tester un port sur Mac ?
nc, qui est intégré. nc -vz example.com 443 affiche succeeded si le port accepte les connexions et Connection refused si rien n'écoute.
Comment quitter telnet ?
Appuyez sur Ctrl-], le caractère d'échappement, puis tapez quit et appuyez sur Entrée.
Sources
- telnet(1), manuel FreeBSD
- nc(1), manuel OpenBSD
- Formule Homebrew : telnet
- RFC 854, spécification du protocole Telnet
- Configurer Secure Shell, Cisco