Básicamente telnet es el protocolo de comunicaciones estandar que conecta una maquina con otra convirtiéndola de este modo en una terminal del sistema remoto; esto quiere decir que podremos ejecutar comandos como si estuviéramos manejando dicho sistema de una manera local (físicamente). La posible desventaja es que únicamente podremos trabajar bajo terminal (línea de comandos), con lo que no podremos utilizar entornos basados en X Windows. Esto es debido a que telnet solo emula terminales corrientes como por ejemplo VT-100, con lo que no soporta entornos gráficos.
La sintaxis básica es:
telnet 'host-name' ['port']
Donde 'host-name' es la dirección a donde quieres conectar y 'port' es el puerto por el que deseas establecer la conexión (el puerto de telnet por defecto es el 23, ello quiere decir que, si no especificas ninguno, telnet interpretará que deseas establecer conexión a 'host-name' por el puerto 23). Señalar también que los puertos indican los diferentes servicios de red (daemons) que pueden o no estar disponibles en dicho host-name.
Si lo deseamos, también podemos ejecutar 'telnet' sin nada mas haciendo de este modo que se ejecute en su modalidad de “comando interactivo”. Ejemplo:
[enrique@g00r00 /]$ telnet telnet>
Además de 'host-name' y 'port', telnet acepta muchos más argumentos:
Usage: telnet [-8] [-E] [-L] [-a] [-d] [-e cha] [-l ser] [-n trace file]
[-r] [host-name [port]]
Opcion Descripción
-----------------------------------------------------------------------------
-8 Establece la operación en modo 8-BIT.
-E Desactiva la función del 'Escape character' (Carácter de
salida). Le asigna el valor 'off'.
-L Establece la operación de salida en modo 8-BIT.
-a Intenta una conexión automática.
-d Desactiva la depuración.
-e caracter Asigna al 'Escape character' el carácter deseado para
de escape utilizar en esa sesión.
-l usuario Envía el nombre de usuario al sistema donde conectemos de
forma automática. (Este argumento implica utilizar el
argumento -a)
-n archivo de Activa el rastreo y guarda los datos del mismo en el archivo
rastreo de rastreo especificado.
-r Emula a rlogin.
File Transfer Protocol; protocolo que permite, básicamente, enviar/recibir ficheros (ya sean ASCII o binarios) entre dos máquinas conectadas a una misma red; esto quiere decir que utilizando el comando ftp y conectando a un host podremos movernos arriba/abajo por el árbol de directorios, copiar, mover, transferir archivos del host remoto, etc… (Todo esto respetando las protecciones normales de los archivos, es decir, que por ejemplo, no podremos trasferir un archivo si no tenemos permisos correspondientes para dicho archivo.)
Para poder trabajar bajo una sesión de FTP, obviamente, deberemos de tener un nombre de usuario (login) y una contraseña (password) válidos para el host remoto con el que queramos trabajar. Este login y password son utilizados para validar la autentificación y determinar que acceso tendremos a archivos para la trasnferencia.
En numerables ocasiones nos podremos encontrar con hosts que permitan usuarios anónimos, estos son simplemente “cuentas guest” (para invitados) en las que no necesitamos ningún login/password para acceder al sistema remoto. Si disponemos de un host que permita este tipo de usuarios, para poder acceder como invitado (o usuario anónimo) deberemos de iniciar una sesión FTP a dicho host y utilizar como login 'anonymous' y como password 'tu dirección e-mail') Normalmente cuando conectamos como usuario anónimo accedemos a un árbol de directorios sujeto a restricciones que, casi siempre, tiene acceso de solo lectura; si llegáramos a poder enviar archivos al host remoto, seguramente, solo podremos depositarlos en un único directorio (directorio temporal /Temp)
El comando FTP de LiNUX proporciona numerosas opciones en “modalidad interactiva”. A continuación explicaremos todas esas opciones de las que dispone: (Cabe señalar que, probablemente, algunos sistemas remotos podrían no admitir todas las opciones de las que dispone el FTP de LiNUX, aunque seguramente no secesitaremos muchas de ellas…)
Opción Descripción
-----------------------------------------------------------------------------
! Invoca una shell interactiva en la maquina local.
$ Ejecuta una macro.
account Proporciona el password requerido para el host remoto.
append Añade a un archivo.
ascii Establece el modo de transferencia de archivos como ASCII.
bell Emite un pitido cuando se completa un comando.
binary Establece el modo de transferencia de archivos como binaria.
bye Finaliza la sesión ftp y termina la "modalidad interactiva".
case Cambia mget entre asignación de nombre de archivos con
mayúsculas o minúsculas.
cd Cambia de directorio en el host remoto.
cdup Cambia del directorio remoto donde se este trabajando al
directorio matriz (parent directory).
chmod Modifica permisos de un archivo remoto.
close Finaliza la sesión ftp.
cr Cambia el filtrado de retornos de carro cuando se recibe
un archivo ASCII.
delete Borra archivos remotos.
debug Cambia la modalidad de depuración.
dir Lista el contenido del directorio remoto donde nos
encontremos.
disconnect Finaliza la sesión ftp (idéntico a close).
form Establece el formato de transferencia de archivos.
get Obtiene (descarga) un archivo del host remoto.
glob Cambia la expansión de comodín de nombres locales de
archivo.
hash Imprime el carácter # para cada memoria intermedia
transferida.
help Muestra información de ayuda. (Lista estos comandos).
idle Establece el tiempo de inactividad en el host remoto.
image idéntico al comando binary.
lcd Cambia al directorio local de trabajo.
ls Lista el contenido del directorio remoto.
macdef Define una macro.
mdelete Borra archivos múltiples en el host remoto.
mdir Lista el contenido de directorios remotos múltiples.
mget Obtiene archivos múltiples del host remoto.
mkdir Crea un directorio en el host remoto.
mls Lista el contenido de directorios remotos múltiples.
mode Establece la modalidad de transferencia de archivos.
modtime Muestra la hora de la ultima modificación del archivo remoto.
mput Envía archivos múltiples al host remoto.
newer Obtiene el archivo remoto si este es mas reciente que el
archivo local correspondiente.
nmap Establece plantillas para asignación predeterminada de
nombres de archivos.
nlist Lista el contenido del directorio remoto.
ntrans Establece la tabla de traducción para la asignación.
predeterminada de nombres de archivos.
open Establece conexión con la ubicación ftp remota.
prompt Fuerza indicaciones interactivas de comandos múltiples.
proxy Emite comandos en conexión alternativa.
sendport Cambia la utilización del comando PORT para cada conexión de
datos.
put Envía un archivo al host remoto.
pwd Imprime el directorio de trabajo en la maquina remota.
quit Finaliza la sesión ftp y sale.
quote Envía un comando ftp arbitrario.
recv Recibe un archivo.
rget Obtiene un archivo volviendo a empezar al final del archivo
local.
rstatus Muestra el estado de la maquina remota.
rhelp Obtiene ayuda del servidor remoto.
rename Renombra un archivo.
reset Despeja la cola de respuestas de comandos.
restart Reinicia la transferencia de un archivo a partir de la
cuenta de bytes especificada.
rmdir Elimina un directorio de la maquina remota.
runique Cuando se recuperan archivos múltiples con el mismo nombre.
de archivo al mismo directorio, runique asigna un nombre de
archivo exclusivo a cada archivo recibido.
send Envía un archivo al host remoto.
site Envía un comando especifico a la ubicación al servidor.
remoto, uno entre umask, idle, chmod, help, group, gpass,
newer o minfo.
size Muestra el tamaño del archivo remoto.
status Muestra el estado actual.
struct Establece la estructura de transferencia de archivos.
system Muestra el tipo de sistema remoto.
sunique Cuando se envían archivos múltiple con el mismo nombre de
archivo al mismo directorio, sunique asigna un nombre
exclusivo de archivo a cada archivo enviado.
tenex Establece el tipo de transferencia de archivos tenex.
trace Cambia el rastreo de paquetes.
type Establece el tipo de transferencia de archivos.
user Envía nueva información de usuario.
umask Obtiene o establece el umask en el host remoto.
verbose Cambia la modalidad detallada.
? Muestra información de ayuda. (idéntico a help).
Podemos destacar (a parte de telnet y FTP) varios comandos que nos permitirán acceder y controlar de forma remota cualquier host; estos comandos se agrupan en un conjunto llamado 'comandos r' (o también conocidos como ordenes remotas de Berkeley) de los cuales solo hablaremos de rlogin, rsh y rcp respectivamente. (Existen mas comandos como rwho, ruptime, … que no explicaremos ya que no vienen al caso).
Este tipo de comandos, u ordenes, pueden crear un grave problema de seguridad si el administrador del sistema remoto no tiene cuidado, ya que cuando nosotros ejecutamos un comando r- a un sistema remoto, este verifica el archivo /etc/hosts.equiv para comprobar si nuestro sistema esta listado en dicho archivo. Si no llegara a encontrar nuestro sistema, empezara a comprobar, en nuestro directorio de usuario del sistema remoto, si existe el archivo .rhosts. De esta forma el comando r- comprobara si el nombre de nuestro sistema se encuentra listado en el archivo .rhosts.
Si nuestro sistema estuviera listado en cualquiera de estos archivos (host.equiv y .rhost) el comando r- que hiciéramos realizado, se hubiera ejecutado sin comprobar contraseña de acceso.
Esta es, básicamente, la razón por la cual los comandos r- pueden llegar a crear serios problemas de seguridad. Una “recomendación” para aquellos administradores inexpertos es que consideren estas implicaciones a la hora de establecer archivos /etc/host.equiv y .rhost
El comando rlogin (remote login) es parecido al comando telnet, ya que nos permite, al igual que telnet, establecer una sesión de comando interactivo (terminal) en un sistema remoto.
La sintaxis básica del comando rlogin es:
rlogin 'host'
Donde 'host' es la dirección con quien queremos establecer la conexión. A parte del parámetro 'host' rlogin incorpora múltiples opciones; estas son:
SYNOPSIS: rlogin [-8EKLdx] [-e char] [-k realm] [-l username] host
Opción Descripción
-----------------------------------------------------------------------------
- 8 Permite una transmisión de datos de entrada de 8 bits, lo
que posibilita el envío de caracteres ANSI formateados y
otros códigos especiales.
- E Impide el reconocimiento de cualquier carácter como
carácter de escape.
(Proporciona una conexión completamente transparente cuando
se utiliza con la opción -8).
- K Desactiva la autentificación Kerberos.
(Únicamente se utiliza solo cuando se esta realizando una
conexión con un sistema que usa el protocolo de
autentificación Kerberos).
- L Permite la ejecución de la sesión rlogin en modalidad
litout.
- d Desactiva la depuración de los sockets TCP utilizados en la
comunicación con el sistema remoto.
- e Establece el carácter de escape para la sesión rlogin. (El
carácter de escape por defecto es '~')
Podremos especificar un carácter literal o un valor octal en
el formato \nnn.
- k Solicita a rlogin que obtenga permisos Kerberos - k para el
sistema remoto en el dominio especificado en lugar del
dominio del sistema remoto determinado por krb_realofhost(3)
-l Establece el nombre de usuario (login) para el host remoto.
Si se encontrara disponible, se utilizara la autentificación
Kerberos).
- x Activa el cifrado DES para todos los datos pasados por la
sesión rlogin. (Podría tener un impacto sobre el tiempo
de respuesta y utilización de CPU, pero proporciona un
mayor nivel de seguridad).
El comando rsh (remote shell) activa un shell en el sistema remoto que especifiquemos y ejecuta la orden que hayamos especificado en la línea de comandos rsh. Si no llegáramos a especificar ninguna orden, nos conectaremos a la maquina remota como si hubiéramos utilizado rlogin.
La sintaxis básica del comando rsh es:
rsh 'host' ['orden']
Las ordenes (argumentos) que tenemos disponibles para rsh son:
SYNOPSIS: rsh [-Kdnx] [-k realm] [-l username] host [command]
Opción Descripción
-----------------------------------------------------------------------------
- K Desactiva la autentificación Kerberos.
- d Desactiva la depuración de los sockets TCP utilizados para
la comunicación con el sistema remoto.
- k Esta opción solicita a rlogin que obtenga tickets Kerbero
para el sistema remoto en el dominio especificado en lugar
del dominio del sistema remoto determinado por
krb_realofhost(3).
- l Permite la especificación del nombre remoto. Se utiliza la
autentificación Kerberos, si se encuentra disponible y la
autorización se determina como en el comando rlogin.
- n Redirige entradas desde el dispositivo especial /dev/null.
- x Activa el cifrado DES para todos los datos pasados.
(Al igual que rlogin, podría tener un impacto sobre el
tiempo de respuesta y utilización de la CPU, pero
proporciona un mayor nivel de seguridad).
El comando rcp (remote copy) es utilizado para copiar archivos entre sistemas remotos, es decir que mediante rcp podremos copiar archivos desde un host remoto a otro, sin que nuestro sistema tome partido de dicha acción. Saber también que rcp no solicita ningún tipo contraseña y efectúa las copias por medio de rsh.
El comando rcp tiene dos formatos:
La sintaxis del comando rcp es:
rcp [-px] [-k realm] file1 file2
rcp [-px] [-r] [-k realm] file ... directory
Opción Descripción
-----------------------------------------------------------------------------
- r Copia recursivamente el árbol de directorio fuente al
directorio de destino. (El destino debe ser un directorio
para poder utilizar esta opción).
- p Intenta conservar los tiempos y modalidades de los archivos
fuente, ignorando umask.
- k Esta opción solicita a rcp la obtención de tickets Kerberos
para el sistema remoto en el dominio especificado en lugar
de en el dominio del sistema remoto determinado por
krb_realmofhost(3).
- x La opción -x activa el cifrado DES para todos los datos
pasados por rcp. Al igual que rlogin y rhs, esto podría
tener un impacto sobre el tiempo de respuesta y utilización
de la CPU, pero proporciona un mayor nivel de seguridad).
El formato que se utiliza para los nombres de los archivos remotos es del tipo:
rname@rhost:path
Donde rname es el nombre de usuario remoto, rhost es el host remoto y path es la ruta del archivo.