TRABAJO EN RED

 

En ocasiones es necesario acceder a un equipo al que no estamos directamente conectados, o bien acceder a un archivo ubicado en otro sistema diferente al nuestro. La forma ás sencilla de resolver este problema es mediante la conexión de los equipos a una red, de modo que la información pueda estar disponible en todos ellos, estando ubicada únicamente en uno de ellos.

Si el sistema está integrado en una red, se pueden transferir archivos entre los equipos, iniciar una sesión de forma remota y ejecutar aplicaciones o comandos en equipos remotos.

Es posible acceder de una máquina a otra siempre y cuando exista un camino físico por el que hacerlo, un cable directo, una red, etc. Las redes pueden ser de área local (LAN) o de área extensa (WAN) dependiendo de la extensión de la misma.

Para que un usuario de un sistema determinado pueda acceder a un sistema remoto será necesario que tenga una cuenta de usuario en dicho sistema, y que los accesos remotos estén permitidos.

Cuando se accede a un sistema remoto, los comandos se ejecutarán en la máquina o host remoto, si bien las entradas y salidas estándar estarán en el sistema local. Se puede decir que el sistema local se limita a interconectar al usuario con el sistema remoto, de forma transparente. Esto no es del todo cierto, pues quedan registros de las conexiones establecidas, etc. en los sistemas local y remoto.

Para acceder a un sistema habrá que conocer su dirección IP (AAA.BBB.CCC.DDD, donde cada uno de los 4 valores tomará valores entre 0 y 255) y/o nombre. Para saber si un sistema es accesible por su nombre se puede consultar el archivo /etc/hosts, en el que se identifican los nombres de los sistemas con su dirección IP. Este archivo solo puede ser modificado por el administrador o superusuario del sistema (root).

Una forma de conocer si un sistema es accesible es mediante el comando ping, mediante el cual el sistema local envía mensajes al sistema remoto y espera respuesta. Si se recibe respuesta, no se pierde ningún paquete, es que el sistema está accesible.

ping [-c cuenta] [- t tiempo] [DIR-IP o Nombre]

Para conocer información sobre un sistema se puede utilziar el comando nslookup lo cual de paso nos servirá para saber si el sistema es accesible desde el sistema en que nos encontramos.

 

Transferencia de Archivos

 

FTP (File Transfer Protocol - Protocolo de transferencia de archivos)

El comando por excelencia usado para tranferir archivos entre dos sistema es ftp. Con ftp, en principio, se puede acceder a cualquier archivo del sistema al que nos conectamos, pero motivos de seguridad, lo más habitual es que el acceso esté limitado a una serie de directorios definidos por el administrador. El sistema puede admitir o no conexiones remotas de tipo anónimo.

Sintaxis :

ftp [-opciones] [sistema]

Una vez conectados al sistema, deberemos validarnos, introduciendo el login de usuario y clave del sistema remoto (no del sistema local).

Una vez que hemos accedido al sistema se nos presentará un interprete de comandos o shell propia de ftp. Los comandos validos para este interprete son muy limitados (no olvidemos que está orientado a transferencia de archivos), tal y como se puede ver en la siguiente lista obtenida con el comando help:


!               debug           mget            put             size
$               dir             mkdir           pwd             status
account         disconnect      mls             quit            struct
append          form            mode            quote           system
ascii           get             modtime         recv            sunique
bell            glob            mput            reget           tenex
binary          hash            newer           rstatus         trace
bye             help            nmap            rhelp           type
case            idle            nlist           rename          user
cd              image           ntrans          reset           umask
cdup            lcd             open            restart         verbose
chmod           ls              prompt          rmdir           ?
close           macdef          proxy           runique
cr              mdelete         sendport        send
delete          mdir            passive         site

Es posible que existan restricciones de acceso a algunos directorios en el sistema remoto, dependiendo de la configuración que haya determinado el administrador.

Para transferir un archivo desde un sistema remoto a nuestro sistema usaremos:

ftp> get archivo_remoto [archivo_local]

El archivo_remoto puede ser el nombre de un archivo del directorio de trabajo remoto o una ruta relativa o absoluta desde dicho directorio. Si no especifica un archivo_local, el nombre del archivo de destino local será igual que el nombre del archivo de origen remoto. Si todo va bien, al final se confirmará indicando el tiempo empleado y la tasa de transferencia.

Para transferir un archivo desde nuestro sistema a un sistema remoto usaremos:

ftp> put archivo_local [archivo_remoto]

Si no especifica un archivo_remoto, el nombre del archivo de destino remoto será igual que el nombre del archivo de origen local.

Tanto en un caso como en otro, en caso de existir el archivo en el directorio de destino, será sobreescrito.

Para enviar o recibir varios archivos se pueden usar los comandos mput o mget respectivamente pudiendo usar comodines (como "*") para especificar los archivos.

Para cambiar de directorio en el sistema local y remoto utiliaremos los comandos lcd y cd respectivamente.

Para finalizar una sesión de ftp habrá que usar el comando bye.

 

RCP (Remote Copy - Copia Remota)

Para copiar archivos entre sistemas se puede usar el comando rcp. Se pueden copiar archivos o directorios entre el sistema local y un sistema remoto o copiarlos entre sistemas remotos.

Si el administrador del sistema ha configurado el sistema para utilizar remsh, se podrá usar rcp sin ningún tipo de preparación adicional. Para utilizar rcp, habrá que tener:

Sintaxis:

rcp [-r] [usuario1@]nombre_host_1:archivo_origen [usuario1@]nombre_host_2:archivo_destino

La opción -r se emplea para copiar directorios de forma recursiva.

La opción de indicar el usuario es usada cuando los usuarios de los sistemas origen y destino son diferentes.

En caso de que uno de los sistemas sea el sistema local, se puede omitir el nombre del host. El archivo de un sistema remoto (tanto si es origen como destino) debera especificarse con su path. En caso de copiar del sistema local o al sistema local, el destino se indicará por su path relativo o absoluto en caso de no encontrarse en el directorio actual.

 

SFTP

El comando sftp transfiere archivos entre máquinas de forma interactiva, utilizando una conexión segura utilizando los métodos de autenticación de ssh (ver ssh más adelante).

Sintaxis :

sftp [sistema]

Los comandos interactivos son similares a los de ftp, como se puede ver en la siguiente lista obtenida con el comando help:

cd path                       Change remote directory to 'path'
lcd path                      Change local directory to 'path'
chgrp grp path                Change group of file 'path' to 'grp'
chmod mode path               Change permissions of file 'path' to 'mode'
chown own path                Change owner of file 'path' to 'own'
help                          Display this help text
get remote-path [local-path]  Download file
lls [ls-options [path]]       Display local directory listing
ln oldpath newpath            Symlink remote file
lmkdir path                   Create local directory
lpwd                          Print local working directory
ls [path]                     Display remote directory listing
lumask umask                  Set local umask to 'umask'
mkdir path                    Create remote directory
put local-path [remote-path]  Upload file
pwd                           Display remote working directory
exit                          Quit sftp
quit                          Quit sftp
rename oldpath newpath        Rename remote file
rmdir path                    Remove remote directory
rm path                       Delete remote file
symlink oldpath newpath       Symlink remote file
version                       Show SFTP version
!command                      Execute 'command' in local shell
!                             Escape to local shell
?                             Synonym for help

 

SCP

El comando scp permite copiar ficheros entre dos máquinas de una forma a como hace rcp, pero utilizando una conexión segura. Al igual que sftp utiliza los métodos de autenticación y transmisión de la información que ssh, por lo que ofrecen la misma seguridad.

 

Accesos remotos

TELNET

Quizás el método más extendido para conexión a sistemas remotos es usando el comando telnet. Su utilización es muy sencilla, una vez accedamos al sistema trabajaremos como si estuvieramos conectados directamente o en modo local en él.

Sintaxis:

telnet [-opciones] Nombre_Sistema/Dir_IP [puerto]

Si el sistema se encuentra definido en el archivo /etc/hosts se podrá usar el nombre del sistema en lugar de su dirección IP. Por defecto se utiliza el puerto el puerto 23, si bien se puede especificar otro.

Una vez que conectamos con el sistema, nos pedirá el login de usuario y su clave, del mismo modo que hariamos para entrar al sistema local. Si el usuario y clave introducidos no son correctos el sistema denegará la entrada, cortando la conexión al cabo de varios fallos (normalmente 3). Para finalizar la sesión basta con ejecutar el comando exit.

RLOGIN

Si se dispone de cuenta en un sistema remoto, se puede utilizar el comando rlogin para iniciar una sesión en dicho sistema y trabajar en él como si estuvieramos en modo local.

Sintaxis:

rlogin nombre_host_remoto/Dir_IP [-l usuario]

El sistema remoto se puede indicar por su dirección IP o por su nombre, si este se encuentra definido en el archivo /etc/hosts. Para iniciar una sesión como otro usuario en el sistema remoto, se emplea la opción -l. Por defecto, el inicio de sesión se realiza con el mismo nombre de usuario con el que se inicia una sesión en el sistema local. Esta opción es útil si utiliza el equipo de otra persona y desea volver a iniciar una sesión en su propio sistema.

Una vez que hemos accedido al sistema podremos trabajar en el sistema como si estuvieramos directamente conectados. Para finalizar una sesión abierta con rlogin hay que usar el comando exit o Ctrl-D.

Para ejecutar un comando en el sistema local mientras se utiliza el comando rlogin, habrá que usar la secuencia ~! seguida del comando que haya de ejecutarse localmente.

Para la conexión mediante rlogin se emplea el puerto 512.

SSH

Esta forma de conexión está tomando auge de un tiempo a esta parte por motivos de seguridad. SSH son las siglas se Secure Shell. Mientras que los programas clásicos transmiten los datos de forma transparente, SSH utiliza una conexión encriptada con métodos de autenticación por clave pública para establecer segura entre el cliente y el servidor. Mientras telnet utiliza por defecto el puerto 23, ssh utiliza el 22. De cara al usuario ssh funciona practicamente igual que telnet, pero más seguro en lo referente a privacidad.

Para poder establecer conexiones ssh con un equipo remoto es necesario que en dicho equipo esté corriendo el demonio sshd.

Sintaxis:

ssh usuario@Sistema_Remoto [comando]
ssh -l usuario Sistema_Remoto [comando]

El comando es opcional (solo interesa para ejecutar una serie de tareas concretas en la máquina). Si no se especifica, se accederá a la shell, en cualquier caso, previa petición y validación de la clave de usuario. Existe un procedimiento que una vez ejecutado permite lanzar comandos remotos mediante ssh sin petición de clave y que se puede ver en la sección Algunas Ideas y Ejemplos.

 

Ejecuciones Remotas

REMSH

El comando remsh permite ejecutar uno o varios comandos en un sistema remoto sin iniciar una sesión en dicho sistema. Para ello, el usuario local y sistema local deben estar definidos en el archivo .rhosts del sistema remoto.

Sintaxis:

remsh sistema [ -l usuario ] comando

Para especificar varios comandos, estos han de ir separados por punto y coma ";" tal y como se hace normalmente, si bien es necesario que los comandos vayan agrupados entre comillas.

 

Archivo .rhosts

El archivo .rhosts es un archivo que se ubica en el directorio de cada usuario, en el que se definen que usuarios y desde que sistema tienen acceso a ese directorio de usuario con su identidad. Permite a esos usuarios asumir su identidad cuando acceden remotamente.

La existencia del archivo .rhosts en cualquier directorio puede ocasionar problemas de seguridad, por lo que es es importante permitir el acceso únicamente a aquellos usuarios y sistemas que deban tenerlo. Además hay que tener en cuenta los siguientes consejos:

Este archivo se consulta cuando se intenta acceder al sistema mediante rlogin, rcp o remsh

Los nombres de sistemas definidos deben coincidir con los definidos en el archivo /etc/hosts.

La estructura del archivo .rhost es del tipo:


sistema1	login_usuario_local_1	 # Comentario_1
sistema2	login_usuario_local_2	 # Comentario_2

Se pueden habilitar o inhabilitar usuario y/o sistemas con los signos "+" y "-", de modo que el + habilita o permite y el - deniega el acceso.

 

Correo electronico

Se puede enviar y recibir correo de usuarios del sistema o de otros sistemas, para ello, existen diferente comandos como mail, mailx, o elm (en HP-UX). Para enviar un mensaje a un usuario, por lo general, habrá que indicar el nombre del usuario de destino y el nombre del sistema, con una nomenclatura como la usada en Internet:

usuario@host

Ejemplos:


$ mailx
    1 root               Wed Jul 13 07:52   82/2520  sistema1: Event Monitor Notif
    2 root               Sun Jul 24 21:08  122/3943  sistema1: Event Monitor Notif
    3 root               Sat Aug 13 11:01   83/2466  sistema2: Event Monitor Notif
 ? help
            mailx commands

type [msglist]       print messages
next                 goto and type next message
edit [msglist]       edit messages
from [msglist]       give header lines of messages
delete [msglist]     delete messages
undelete [msglist]   restore deleted messages
save [msglist] file  append messages to file
reply [message]      reply to message, including all recipients
Reply [msglist]      reply to the authors of the messages
preserve [msglist]   preserve messages in mailbox
mail user            mail to specific user
quit                 quit, preserving unread messages
xit                  quit, preserving all messages
header               print page of active message headers
!                    shell escape
cd [directory]       chdir to directory or home if none given
list                 list all commands (no explanations)
top [msglist]        print top 5 lines of messages
z [-]                display next [previous] page of 10 headers

[msglist] is optional and specifies messages by number, author,
subject or type.  The default is the current message.
 ? exit
 
 $ mailx usuario1@maquinaX		
 Subject: Probando
 Escribimos todo lo que queramos 
 y finalizamos pulsando .
 .
 Cc: 
 

Para más ayuda sobre estos comandos se recomienda mirar la ayuda en linea (comando man).