Por qué falta telnet
zsh: command not found: telnet
Apple quitó telnet, junto con ftp, en macOS High Sierra (10.13). No hay nada roto en tu Mac ni un ajuste para recuperarlo. Tienes dos opciones, y la buena depende de para qué lo querías.
- Comprobar si un puerto está abierto, para un servidor web, de correo o SSH: usa
nc, que ya está en el Mac. - Entrar en un equipo que habla Telnet, como un switch, un router o un servidor de consolas: instala el cliente Telnet.
Probar un puerto con nc
Mucha gente escribe telnet host 443 solo para ver si un puerto responde. nc lo hace mejor, porque lo dice con claridad y termina:
nc -vz example.com 443
Connection to example.com port 443 [tcp/https] succeeded!
Un puerto cerrado da Connection refused, y uno bloqueado por un cortafuegos no responde hasta que se agota el tiempo. Añade -G 5 para rendirte a los 5 segundos. Los dos casos tienen su guía: connection refused y connection timed out.
Para escribir en un protocolo de texto, como SMTP en el puerto 25, quita -z. -c envía CR y LF al final de cada línea, como esperan muchos servidores:
nc -c mail.example.com 25
Para un equipo que negocia opciones Telnet, añade -t para que nc las responda. Sirve para un vistazo rápido, pero un cliente de verdad gestiona bien el eco y el tamaño del terminal.
Instalar telnet con Homebrew
Con Homebrew instalado:
brew install telnet
Es el cliente que Apple incluía antes. El paquete inetutils también contiene un telnet, pero choca con este, así que elige solo uno. Después conecta con la dirección y, si no es el 23, el puerto:
telnet 192.0.2.10 23
Trying 192.0.2.10...
Connected to 192.0.2.10.
Escape character is '^]'.
Para salir, pulsa Ctrl-], escribe quit y pulsa Intro. Ctrl-C no suele funcionar, porque se envía al equipo.
Cuándo sigue haciendo falta Telnet
Telnet envía todo en texto plano, contraseñas incluidas. Cualquiera en el camino de red puede leerlo. Aun así tiene usos reales:
- Switches, routers, impresoras y PDU sin SSH, o con SSH desactivado de fábrica.
- Servidores de consolas que exponen cada puerto serie como un puerto Telnet, por ejemplo 2001, 2002 y así sucesivamente.
- Equipos de laboratorio, simuladores de red y sistemas industriales antiguos.
- Servicios de texto como las BBS y los juegos MUD.
Úsalo en una red de confianza, como una VLAN de gestión o un cable directo, y nunca a través de internet.
Pasar un equipo de Telnet a SSH
Si el equipo admite SSH, actívalo y apaga Telnet. En Cisco IOS, por ejemplo, después de crear un usuario 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
Prueba SSH desde una segunda ventana antes de cerrar la sesión Telnet. Para máquinas Linux que aún tienen un servidor Telnet, mira cómo activar SSH en Ubuntu y después elimina el paquete del servidor telnet.
Problemas habituales
Connection refused. El equipo no acepta Telnet en ese puerto. Puede estar apagado o permitido solo desde una red de gestión.- Conectado, y luego nada. Pulsa Intro. Algunos equipos muestran el login solo tras pulsar una tecla.
- Caracteres raros o menús rotos. El equipo usa otro juego de caracteres, como ISO-8859-1, o espera otro tipo de terminal. Mira unknown terminal type.
- Retroceso escribe
^?. El equipo espera Ctrl-H para borrar. Pulsa Ctrl-H en su lugar, o configura la tecla de borrado en el equipo.
Preguntas
¿Por qué no está telnet en mi Mac?
Apple quitó telnet y ftp de macOS a partir de High Sierra (10.13), en 2017, porque los dos transmiten todo sin cifrar. El comando no está oculto: ya no existe.
¿Cómo instalo telnet en Mac?
Instala Homebrew y ejecuta brew install telnet. El paquete inetutils también trae un comando telnet, pero los dos chocan, así que instala solo uno.
¿Qué uso en lugar de telnet para probar un puerto en Mac?
nc, que viene incluido. nc -vz example.com 443 muestra succeeded si el puerto acepta conexiones y Connection refused si no hay nada escuchando.
¿Cómo salgo de telnet?
Pulsa Ctrl-], que es el carácter de escape, luego escribe quit y pulsa Intro.
Fuentes
- telnet(1), manual de FreeBSD
- nc(1), manual de OpenBSD
- Fórmula de Homebrew: telnet
- RFC 854, especificación del protocolo Telnet
- Configurar Secure Shell, Cisco