UTLAI PUNTO DOC
Nº 27 --- Octubre 2005
Apuntes sobre Telnet
(proporcionados por Juan Antonio Gutiérrez Vega).
Telnet, introducción
¿que es Telnet?
Internet ofrece, ademas de sus servicios mas populares (email, navegacion) otras posibilidades menos conocidas, como telnet.
Antes de que la www hiciera posible la "navegación gráfica", los ordenadores conectados a internet solo entendían "secuencias de comandos", al estilo DOS
o UNIX. Telnet era y es una de las formas de conectarse a otra computadora y ejecutar en ella estos comandos. De hecho Telnet es anterior a internet, tal
y como la conocemos, y se ejecutaba ordenador-ordenador, es decir por medio de llamada directa del ordenador terminal al ordenador host, si bien lo normal
hoy en dia es ejecutarlo dentro de internet, por el prococolo comun IP/TCP
La llegada de la navegación gráfica ha relegado a Telnet a usos mas restringidos, normalmente relacionados con la administración remota de equipos, o consulta
de recursos muy especializados (bibliotecas, BBS, Archie, bases de datos). No obstante, como veremos, existen recursos interesantes a los que solo se puede
acceder por Telnet.
¿que programas necesito?
Los programas telnet para windows consisten en simuladores de terminales UNIX. Windows provee un programa de este tipo: sencillamente, abre una sesión de
DOS y escribe telnet (o si posees las ultimas versiones de communicator o iexplorer, teclea en la barra de direcciones telnet://nombre_del_servidor).
Existen otros programas mas cómodos, normalmente gratuitos. Yo uso
easyterm.
Lo que conseguimos al conectar con otro pc via telnet es simular que nuestro teclado y nuestra pantalla están físicamente conectados a ese ordenador, es
decir, podemos estar operando con un ordenador desde nuestra casa como si nos encontrásemos en nuestro ordenador del trabajo, accediendo a sus mismos recursos,
segun los permisos con los que contemos.
Como nuestro ordenador actúa como simple terminal, debes recordar que una vez conectado, los comandos a utilizar serán los mismos que usarías de estar frente
a aquel ordenador remoto: comandos DOS (existen servidores con ese sistema) pero en su inmensa mayoría comandos UNIX -sistema operativo instalado en la
mayor parte de servidores de internet- o comandos propios del programa que desees ejecutar via telnet (mysql, PINE, SENDMAIL, etc)
Cuando hagas tus primeras conexiones telnet, comprobarás a veces que no puedes ver en tu terminal las letras que vas escribiendo; esto sucede porque ese
servicio telnet concreto no retorna tus letras escritas; Para resolver este problema tenemos que ordenar al programa que mande un echo local; la forma
de hacerlo depende del programa que uses; en easyterm es tan sencillo como pulsar el icono con una oreja dibujada.
Algunas veces veremos que el terminal nos duplica nuestras pulsaciones de teclado; esto sucede porque ese servicio telnet si nos devuelve el eco de nuestra
escritura, y nosotros tenemos el eco local conectado; sencillamente ponemos eco local off.
Hay que insistir en que cuando ejecutamos telnet abandonamos el cómodo mundo gráfico de windows y pasamos al reino UNIX. UNIX es poderoso, pero exige precisión.
Ten en cuenta, por ejemplo, que una misma palabra en mayúsculas o minúsculas tiene distinto significado.
tengo un programa telnet ¿que hago ahora?
Con telnet podemos acceder a miles de ordenadores remotos, estableciendo conexión directa con ellos. En la actualidad lo normal es que las conexiones telnet
se hagan via internet, usando el puerto 23. Lo normal es que una vez conectados (login) el ordenador remoto (host) nos pida un nombre de usuario y contraseña
para poder ejecutar comandos, pero existen muchos ordenadores que ofrecen recursos para visitantes anónimos, a los que accedemos como invitados, sin palabra
clave.
La forma típica de comenzar es buscar la orden connect, abriendosenos una ventana donde indicaremos el host al que queremos conectar (nos sirve tanto el
nombre de dominio como la IP) y el puerto de conexión (puerto telnet, 23 por defecto, aunque una misma maquina puede estar ejecutando diversos servicios
telnet, cada uno por un puerto distinto, como pop3 o smtp)
Si todo va bien y el ordenador remoto permite acceso telnet, el programa nos indicará que la conexión ha tenido éxito. A continuación tenemos que identificarnos
ante el sistema remoto (login) mediante nuestro nombre de usuario y contraseña. Normalmente el propio ordenador remoto nos va pidiendo los datos preguntando
por user y password, pero en otras ocasiones la terminal solo nos muestra que estamos conectados, asi que deberemos introducir los datos sin ayuda, normalmente
tecleando user minombreusuario y pass micontraseña
Comandos Básicos
Estos son algunos de los comandos telnet estandard ... sujetos a las peculiaridades del ordenador al que te conectes:
open host [port]
abre una conexión al host llamado. Si el número de puerto no es especificado, telnet intenta de conectar el servidor telnet desde el puerto default. La
especificación del host puede ser tanto el nombre de un host o una IP
close
cierra una sesión TELNET y te regresa al modo de comando.
quit
cierra cualquier sesión TELNET abierta y sale de telnet. Un fin de archivo (end-of-file) (en modo de comando) también cerrará una sesión y saldrá.
Ctrl-z
suspende telnet. Este comando sólo trabaja cuando el usuario está usando csh o la el ambiente de aplicación BSD versión de ksh.
status
muestra el status actual de telnet.
display [argumento .... ]
lista las propiedades del argumento dado
? [comand]
proporciona ayuda. Sin argumentos, telnet muestra un sumario de ayuda. Si un comando es especificado, telnet mostrará la información de ayuda sobre el comando.
send argumentos
envía uno o más secuencias de caracteres especiales a un host remoto. Los siguientes son argumentos los cuales pueden ser especificados (más de algún argumento
puede ser especificado en un tiempo).
escape
envía el caracter telnet escape.
synch
envía la secuencia SYNCH TELNET. Esta secuencia causa que el sistema remoto descarte todo lo previamente tecleado como entrada, pero que todavía no haya
sido leído. Esta secuencia es enviada como un dato urgente TCP.
brk
envía la secuencia TELNET BRK (break -rompimiento), la cual puede tener significado para el sistema remoto.
ip
envía la secuencia TELNET IP (interrupción de proceso), la cual debe causar que el sistema remoto aborte en proceso que se esta corriendo.
ao
envía la secuencia TELNET AO (abortar salida), la cual puede causar al sistema remoto que nivele todas las salidas del sistema remoto a la terminal del
usuario.
ayt
envía la secuencia TELNET AYT (are you there- estas ahí), el cual el sistema remoto puede o no responder.
ec
envía la secuencia TELNET EC (erase character- borrar caracter), la cual puede causar al sistema remoto a borrar el último caracter tecleado.
el
envía la secuencia TELNET EL (erase line - borrar línea), la cual causa que el sistema remoto borre la línea anterior escrita.
ga
envía la secuencia TELNET GA (go ahead - adelante), la cual probablemente no tiene significado para el sistema remoto.
nop
envía la secuencia TELNET NOP ( no operación - no operación).
mode
Cambia el modo de entrada del usuario de telnet al Modo. El huésped remoto es preguntado por el permiso para introducirse en el modo solicitado. Si el huésped
remoto es capaz de entrar en ese modo, el modo solicitado se introduce.
Una sesion de correo con telnet
Podemos leer nuestro correo en una sesion de telnet. ¿Utilidad? piensa por ejemplo en la posibilidad de ver una lista de todos los mensajes nuevos en el
servidor, antes de descargarlos, o borrarlos alli sin necesidad de bajarlos, o incluso consultar el correo desde cualquier ordenador, sin necesidad de
configurar el programa de mail.
Para ello iniciaremos una sesion telnet, pero no por el puerto habitual, sino por el específico POP3 (110) que es donde escucha el server de correo. Toma
nota de que esto sirve para los e-mails ordinarios, pero no para el correo-web (hot-mail y similares). Para mas detalles puedes estudiar
aqui
la especificación POP3.
Una vez conseguida la conexión con el servidor de correo, este nos indica que esta listo para recibir comandos, por ejemplo:
+OK POP3 server ready
Iniciamos la sesion introduciendo nuestro nombre de usuario y password:
USER nombre_usuario
PASS password
Y obtendras contestación del servidor acerca de si has sido o no autenticado.
Ten en cuenta que el servidor puede dar respuesta positiva aunque metas un nombre de usuario inexistente. Solo cuando recibas respuesta positiva a ambos,
nombre y contraseña, podrás operar con el servidor.
Recuerda que en la especificación POP3 los comandos son una sola palabra (de tres o cuatro letras maximo), que puede ir seguida o no de argumentos. El comando
y su argumento iran separados por un solo espacio.
Cada comando introducido obtendrá una respuesta del servidor, que será positiva o negativa. La respuesta puede ir o no seguida de una explicación
+OK comando introducido correctamente
-ERR comando erróneo
Cuando el servidor emite a nuestro comando una respuesta con varias lineas, la ultima linea consistirá en un punto ("."). Y en el caso de que alguna de
las lineas de la respuesta a su vez comenzase con un punto, se añade un punto adicional para distinguirla de la ultima linea.
comandos utiles:
STAT (status) solicita el estado de tu buzón de correos. El servidor responderá informando de cuantos mensajes hay a la espera, en el siguiente formato:
+OK mm bb, donde mm es el numero de mensajes, y bb el numero de bytes del total.
LIST te lista todos los mensajes (identificador más el tamaño). Puedes ejecutarlo solo (ofrecera el numero total de mensajes) o con un argumento (numero
de mensaje) y solo obtendras como respuesta el tamaño de ese mensaje:
LIST
+OK 2 messages (320 octets)
1 120
2 200
.
LIST 2
+OK 2 200
LIST 3
-ERR no such message, only 2 messages in maildrop
TOP nn nl para ver las cabeceras y primeras lineas del mensaje (nn sería el numero del mensaje que quieras ver, nl el numero de lineas de la cabecera, p
ej: TOP 1 ALL)
RETR # para ver un mensaje, debe especificarse su numero en la lista
DELE # borra el mensaje elegido. El borrado no es al enviar el comando, sino al terminar la sesión
RSET recupera los mensajes marcados para borrado
NOOP (No Operation) instruye al servidor para que no ejecute ninguna acción, salvo responder con un mensaje de confirmación (+OK).
UIDL (Unique Identifier List) sirve para asignar un identificador unico a todos los mensajes o a uno especifico.
APOP (Authenticate Post Office Protocol) Este comando puede ser usado como sustituto del binomio USER - PASS para identificar y validar un usuario. Su utilidad
es evitar que el password del usuario viaje por la red de forma no encriptada. La sintaxis es: APOP (nombre) (codigo).
QUIT cierra la conexión. Si se cierra la sesión sin este comando, los mensajes marcados para borrado no se destruiran.
Una sesion típica: en negrita, el tecto tecleado por nosotros.
+OK mx0.redestb.es POP3 server (Post.Office v2.0 0813
with ZPOP version 1.0) ready Sun, 22 Oct 2000 20:23:15 +0100
user minombre
+OK Password required for minombre
pass micontraseña
+OK Maildrop has 0 messages (0 octets)
quit
+OK mx0.redestb.es POP3 server closing connection
y ahora una con mensaje : ))
conectamos:
+OK Hello there.
user minombre
+OK Password required.
pass micontraseña
+OK logged in.
stat
+OK 1 1756
top 1 5
+OK headers follow.
Return-Path: <*****@******.es>
Received: from tsmtp3.ldap.isp (unknown [195.235.113.141])
by pomerol.nexen.net (Postfix) with ESMTP id 5AFBD82DC
for <****@nexen.net>; Mon, 23 Oct 2000 21:18:31
+0200 (CEST)
Received: from ******** ([***.**.***.**]) by
tsmtp3.ldap.isp (Netscape Messaging Server 4.1)
with SMTP id G2WDI902.M4D for <******@nexen.net>;
Mon, 23 Oct 2000 21:15:45 +0200
Message-ID:
<000c01c03d26$14f49a00$3e6760d5@teleline>
From: "irv" <*****@******.es>
To: <******@nexen.net>
Subject: probando. Esto es el "asunto" del mensaje
Date: Mon, 23 Oct 2000 21:18:52 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0009_01C03D36.D807EBE0"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
This is a multi-part message in MIME format.
.
Bueno, hemos conectado, solicitado status y recibido cabecera. Ahora a recuperar el mensaje, y borrarlo del servidor (y hacer QUIT para el borrado efectivo):
retr 1
+OK 1756 octets follow.
Return-Path: <******@*******.es>
Received: from tsmtp3.ldap.isp (unknown [195.235.113.141])
by ******.*****.net (Postfix) with ESMTP id 5AFBD82DC
for <*****@****.net>; Mon, 23 Oct 2000 21:18:31
+0200 (CEST)
Received: from teleline ([***.**.***.***])
by tsmtp3.ldap.isp
(Netscape Messaging Server 4.1) with SMTP id G2WDI902.M4D
for <****@****.net>; Mon, 23 Oct 2000 21:15:45
+0200
Message-ID: <000c01c03d26$14f49a00$3e6760d5@teleline>
From: "*****" <****@*****.es>
To: <*****@****.net>
Subject: probando. Esto es el "asunto" del mensaje
Date: Mon, 23 Oct 2000 21:18:52 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0009_01C03D36.D807EBE0"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.
4133.2400
This is a multi-part message in MIME format.
------=_NextPart_000_0009_01C03D36.D807EBE0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Prueba de mensaje recuperado con telnet.
Esto es el CUERPO del mensaje
------=_NextPart_000_0009_01C03D36.D807EBE0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 5.50.4134.600" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>
Prueba de mensaje recuperado con = telnet. Esto es el=20
CUERPO del mensaje</FONT></DIV></BODY></HTML>
------=_NextPart_000_0009_01C03D36.D807EBE0--
.
dele 1
+OK Deleted.
quit
+OK Bye-bye.
y eso es todo por ahora.
Solución de problemas con telnet
Como telnet sirve para conectar dos ordenadores que pueden ser incluso de distintos sistemas operativos, y una conexión telnet puede servir para fines muy
diferentes, los problemas pueden ser de lo mas diversos, por lo que es dificil dar una guia general.
Estos son alguno de los problemas mas frecuentes
No puedo conectar
La primera pregunta que habría que hacerse es la de si existe un ordenador en la dirección a la que estamos conectando, y si este ordenador tiene un puerto
abierto a la escucha apto para telnet. Puedes hacer un ping a la máquina de destino, aunque la respuesta no será concluyente. En el mejor de los casos
sabrás que la máquina esta conectada a la red, pero no si el puerto al que quieres conectar está abierto; en el peor de los casos no tendrás respuesta
al comando ping, y esto puede ser bien porque la maquina esta desconectada, bien porque filtra los pings entrantes.
La conexión por defecto es en el puerto 29, pero puede ser diferente tanto para telnet en si, como para otros servicios a los que se pueda acceder a telnet,
como correo. Si este es el caso, la forma de especificar el puerto a conectar dependerá del programa que uses, pero básicamente esta información debe ir
incluida en la dirección.
Algunos supuestos de error:
. host desconocido: Quizás escribiste mal la dirección, o ese ordenador está temporalmente desconectado, o no funciona tu servidor DNS. Prueba con la dirección
IP si la sabes.
. Host fuera de alcance típicamente un problema temporal de la red.
. Conexion rechazada: Puede suceder que el servidor haya alcanzado su número máximo de conexiones, o que estes accediendo a un ordenador que no tenga servicio
telnet, o que el puerto sea incorrecto.
. Conexión interrumpida sin motivo: posiblemente problemas de red o del ordenador remoto. O si la sesión llevaba tiempo inactiva, un timeout. Puedes volver
a probar en unos minutos.
. No puedo usar ciertos comandos durante la sesion: No todos los servidores telnet admiten los mismos comandos. Prueba ? para ayuda.
Otros problemas
. Ciertas teclas como enter o retroceso no funcionan: comprueba la configuración de tu cliente telnet. Posiblemente tenga algunas funciones asignadas a
otras teclas.
. caracteres extraños en la pantalla. El problema puede venir de los datos enviados por el servicio al que estas conectado, o puede suceder que tu programa
cliente telnet esté desconfigurado y use un juego de caracteres extraño. Otra opción a considerar: que tu cliente telnet esté emulando un terminal distinto
del que espera el servidor.
Si has llegado a este artículo a partir de un mensaje de
correo electrónico, pulsa alt+f4 para cerrar esta ventana y volver a él.
Si lo estás leyendo a través de la red, desde aquí puedes:
Volver al nº 26 de la
revista