Shell remoto con Telnet

El protocolo de shell remoto Telnet (Telecommunicating Networks) permite abrir un shell en una máquina remota. Este procolo se implementa con arquitectura cliente-servidor, por lo que necesita:

  • un servidor Telnet que se esté ejecutando en la máquina remota, y que por defecto, estará escuchando en el puerto 23 TCP.
  • un cliente Telnet que nos permita conectarnos al servidor emulando un terminal que se encontrase físicamente conectado a él.

Si queremos habilitar el servidor Telnet (paquete telnetd) lo haremos por medio de inetd. Editaremos /etc/inetd.conf y añadiremos la línea:

telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd

Atención

El servidor Telnet no debe utilizarse, ya que transmite los datos sin encriptar, habiendo sido sustituido por SSH, una versión encriptada de Telnet.

El comando telnet (paquete telnet) es un cliente Telnet. Su sintaxis es la siguiente:

$ telnet <direccion_host> [puerto]
  • <direccion_host> IP o nombre de la máquina remota.
  • [puerto] por defecto utiliza el puerto 23 TCP.

Por ejemplo, para conectarnos al servidor Telnet de la máquina pc350 (por defecto puerto 23 TCP), haremos:

$ telnet pc350
Trying 192.168.1.3...
Connected to pc350
Escape character is '&circ;]'
pc350 login:

Para conectar con el router haremos:

$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1
Escape character is '^]'
Username:

Lo primero que nos pide el sistema remoto es el login. Debemos introducir un nombre de usuario válido en el sistema remoto y su contraseña. Una vez logueados, tendremos acceso al sistema y podremos usarlo como si estuviéramos sentados allí, con los privilegios que tenga ese usuario.

Para obtener ayuda una vez conectados, generalmente alguno de los comandos help, ? o man nos dará información sobre los comandos disponibles:

> help
Following commands are available :
help             : Displays this help information
menu             : Displays menu
?                : Displays this help information
exit             : Exits this shell.
saveall          : Saves current configuration.
ping             : Send ICMP ECHO_REQUEST packets.
traceroute       : Send ICMP/UDP packets to trace the ip path.
 
Following command groups are available :
firewall        service         autopvc         connection      dhcp
dns             dsd             dyndns          eth             adsl
atm             config          debug           env             expr
hostmgr         igmp            interface       ip              ipqos
label           language        memm            mlp             nat
ppp             pptp            script          snmp            sntp
software        system          systemlog       quit            user

Para cerrar la conexión con el sistema remoto ejecutaremos:

> quit

O bien:

> exit

o pulsaremos la secuencia de escape <Ctrl+]>

Conexión con un servidor cualquiera con Telnet en Linux

El comando telnet no sólo actúa como un cliente Telnet, sino que nos permite conectar con cualquier servidor remoto apuntando al puerto correspondiente. Una vez conectados, generalmente alguno de los comandos help, ? o man nos dará información sobre qué comandos se pueden usar.

Veamos un ejemplo:

  • Para consultar el correo POP mediante el cliente Telnet haremos:
    $ telnet callisto.unm.edu 110
    Trying 192.168.1.2...
    Connected to 192.168.1.2.
    Escape character is '^]'.
    +OK Qpopper (version 4.0.5) at pc266.dominio.com starting.
    > user francis
    +OK Password required for francis.
    > pass *******
    +OK francis has 2 visible messages (0 hidden) in 1381 octets.

    Ver la lista de mensajes y lo que ocupa cada uno:

    > list
    +OK 2 visible messages (1381 octets)
    1 696
    2 685

    Leer el primer mensaje:

    > retr 1
    +OK 696 octets
    Delivery-date: Sat, 02 Jun 2007 02:36:38 +0200
    Received: from Bob by pc266.dominio.com with local (Exim 4.63)
    To: [email protected]
    Subject: Prueba
    ...

    Marcar el segundo mensaje para borrar (no se borra hasta que cerremos la sesión):

    > dele 2
    +OK Message 2 has been deleted.

    Quitar la marca de borrado al segundo mensaje:

    > rset 2
    +OK Maildrop has 2 messages (1381 octets)

    Para obtener ayuda:

    > help
    Commands supported:
    AUTH HELO EHLO MAIL RCPT DATA NOOP QUIT RSET LIST RETR DELE HELP

    Terminar la sesión:

    > quit

Artículos en la categoría "Servidores (software)"

  1. Monitorizar servidores con Nagios
  2. Monitorizar routers SNMP con MRTG
  3. Administración de máquinas Linux con Webmin
  4. Shell remoto con Telnet
  5. Servidor DNS Bind
  6. Servidor de IPs dinámicas DHCP
  7. Servidor de hora NTP
  8. Servidor proxy Squid
  9. Servidor de correo electrónico
  10. Servidor de terminales LTSP
  11. Servidor web Apache
  12. Soporte para PHP en Apache
  13. Soporte para CGI en Apache
  14. Analizador de logs de Apache
  15. Servidor de base de datos MySQL
  16. Servidor web Lighttpd
  17. Whois: Quién es el propietario de un dominio
  18. Servidor de archivos FTP
  19. Compartir archivos en Linux: NFS
  20. Compartir archivos en Windows: Samba
  21. Control de versiones: CVS y Subversion
  22. Servidor de streaming por Internet
  23. Servidor de streaming en red local

Un comentario:

  1. carlos beltran

    me saca este error al tratar de hacer telnet a un servidor, que puede ser.

    muchas gracias

    CYBA:/home/CarlosRedes # telnet -a 172.18.0.6 3299
    Trying 172.18.0.6…
    Connected to 172.18.0.6.
    Escape character is ‘^]’.
    NI_RTERR&*ERR*1connection timed out-5NI (network interface)70038nirout.cpp5441RTPENDLIST::timeoutPend: CONNECTED timeoutThu May 29 10:43:45 200859SAProuter 38.10 on ‘arcturus’*ERR*Connection closed by foreign host.