PDF de programación - Servicio de terminal remoto

Imágen de pdf Servicio de terminal remoto

Servicio de terminal remotográfica de visualizaciones

Publicado el 19 de Junio del 2019
105 visualizaciones desde el 19 de Junio del 2019
592,8 KB
36 paginas
Creado hace 1a (18/09/2017)
SERVICIO DE
TERMINAL REMOTO

Celeste Campo (celeste@it.uc3m.es)

Carlos García Rubio (cgr@it.uc3m.es)

TERMINAL REMOTO

Pág. 1

ÍNDICE

1.

Introducción.

2. Protocolo Rlogin.

3. Protocolo Telnet.

4. Secure Shell (SSH)

TERMINAL REMOTO

Pág. 2

BIBLIOGRAFÍA

• Básica:

– “TCP/IP Illustrated, Vol. 1 - The protocols”, W. R. Stevens.

Addison-Wesley 1994. (Chapter 26).

• Complementaria:

– “TCP/IP Protocol Suite”, 4ª Ed. B. Forouzan, McGraw-Hill, 2010.

(Chapter 20).

– “TCP/IP Tutorial and Technical Overview”. IBM Redbook. 2006.

(Chapter 13).

– “Protocol Basics: Secure Shell Protocol”, W.Stallings. The Internet

Protocol Journal, Volume 12, No.4 (Dec 2009)

• RFCs:

– RFC 1282: BSD Rlogin.
– RFC 854: Telnet Protocol Specifications.
– RFC 855: Telnet Option Specifications.
– RFC 4250-4256: SSH.

TERMINAL REMOTO

Pág. 3

Terminal remoto: Introducción (I)

• Antiguamente, para conectarse a una máquina había que hacerlo

desde un terminal:
– Físicamente conectado a la máquina.

– Necesitaba uno por máquina (host).

• Objetivo:

– Poder conectarse desde un único terminal a múltiples máquinas:

• Físicamente conectado a una.

• Se salta a través de la red de una a otra.

• Es uno de los servicios más usados y antiguos de Internet.

TERMINAL REMOTO

Pág. 4

Terminal remoto: Introducción (II)

• Dos aplicaciones proporcionan este servicio:

– RLOGIN:

• más sencillo (1.000 líneas de código).
• desarrollado para Unix (aunque portado a otros sistemas

operativos).

– TELNET

• más antiguo (origen: 1969) y complejo (10.000 líneas).
• prácticamente en cualquier implementación TCP/IP para cualquier

S.O.

TERMINAL REMOTO

Pág. 5

Terminal remoto: Introducción (III)

• Son aplicaciones cliente-servidor:

Cliente telnet

Servidor telnet

login shell

terminal

driver

TCP/IP

TCP/IP

pseudo-
terminal

driver

conexión TCP

• En cuanto al tráfico que se transmite:

– No es un tipo de aplicación que genere gran volumen de

tráfico.

– Generalmente paquetes pequeños.

– Relación 1:20 entre el número de bytes enviados por cliente

y servidor.

TERMINAL REMOTO

Pág. 6

RLOGIN

• Apareció con el 4.2 BSD (1983)

• RFC 1282 (1991):

– Tiene carácter informativo.

• Pensado para login remoto entre máquinas UNIX:

– Más sencillo que TELNET (no hay tanta negociación de

opciones como entre máquinas de distintos S.O.).

• Posteriormente portado a otros sistemas operativos











TERMINAL REMOTO

Pág. 7

RLOGIN: Protocolo

El cliente establece una (única) conexión TCP con el puerto 513
del servidor.
Cliente escribe (uno o varios segmentos TCP):





un \0 (byte a 0, 0x00).
nombre de “login” del usuario en el cliente, terminado por un \0.
nombre de “login” del usuario en el servidor, terminado por un \0.
nombre de tipo de terminal, seguido de “/”, seguido de velocidad,
terminado por un \0.


Tipo de terminal lo necesitan muchas aplicaciones a pantalla completa.

Servidor responde:


\0.

A continuación puede haber una parte de autenticación (ver después).

A partir de aquí cliente y servidor intercambian:


datos:


El cliente envía lo que se introduce por el teclado, carácter a carácter.



Cada uno en un paquete o no, según TCP los agregue en un segmento (algoritmo de
Nagle, etc).



El servidor envía (o no) eco carácter a carácter, y la salida del programa del
servidor (inicialmente la shell).



o comandos:


Suele intercambiarse uno de tamaño de ventana (ver después).

TERMINAL REMOTO

Pág. 8

RLOGIN: Autenticación

• Puede hacerse de dos maneras:

1. Mediante fichero rhosts:

• No se intercambia ningún mensaje por la red.
• El usuario en el servidor debe tener un fichero de texto denominado

$HOME/.rhosts.

– Si en el fichero hay una línea con “nombre_cliente login_cliente” entonces se permite el

login.

2. Solicitando un “password”:

• El servidor manda un segmento con la cadena “Password”.
• El cliente la muestra en pantalla (como cualquier otro dato que le viene del

servidor).

• El usuario teclea su clave, y el cliente la envía, carácter a carácter, como

cualquier otro dato

– ¡En claro! Posteriores mejoras basadas en Kerberos.

• El servidor no hace eco de estos caracteres.
• Comprueba que los caracteres recibidos hasta el \n se corresponden con la clave

en el servidor.

• En caso de fallo, repite el proceso durante un número de reintentos, y se sigue

fallando cierra la conexión TCP.

• Normalmente primero intenta 1, y si no funciona / existe, 2.

• Consideraciones de seguridad: rhost evita enviar la clave en claro por

la red, pero si un intruso suplanta nuestra identidad en el cliente,
automáticamente tiene acceso en el servidor.

TERMINAL REMOTO

Pág. 9

RLOGIN: Control de flujo

• En RLOGIN por defecto hay control de flujo en el cliente.

• Consiste el que hay dos caracteres que cuando los pulsa el usuario, no

se envían al servidor:

– Control-S (carácter ASCII STOP).

• Si el usuario escribe este carácter, indica al cliente que pare la escritura en el

terminal (los datos se acumularán en el búfer de recepción de TCP).

– Control-Q (carácter ASCII START).

• Reanuda la salida en el terminal.

• Por tanto, por defecto, los caracteres Control-S y Control-Q no se

envían al servidor.

• Hay aplicaciones que lo necesitan (p.ej., emacs).

• El servidor puede mandar un comando para deshabilitar / volver a

hablitar el control de flujo en el cliente (lo veremos después).

– Cuando está deshabilitado, el cliente envía los caracteres Control-S y

Control-Q al servidor, sin hacer nada en local.

TERMINAL REMOTO

Pág. 10

RLOGIN: Comandos servidor a cliente

• Son cuatro:

– Se indican con un solo byte, según valga en hexadecimal:
– 0x02:

• Flush output: pide al cliente que tire (no escriba en el terminal) todo lo que tenga

pendiente por escribir.

• Lo suele enviar el servidor al cliente después de que éste haga un control-C.

– 0x10:

• Pide al cliente que deje de hacer control de flujo (interpretar control-S y control-Q)

(lo manda cuando arrancamos una aplicación como emacs).

– 0x20:

• Pide al cliente que haga control de flujo.

– 0x80:

• El servidor pide al cliente que responda inmediatamente enviando el tamaño de la

ventana, y que notifique futuros cambios de tamaño.

• Este comando se suele enviarlo el servidor al principio del todo, justo después de

la autenticación.

• ¿Cómo se distinguen de los datos normales?

– Se envían como datos urgentes de TCP.
– El puntero de datos urgente de la cabecera de TCP indica el byte donde se

encuentra el comando.

TERMINAL REMOTO

Pág. 11

RLOGIN: Comandos de cliente a servidor

• Sólo uno: el de información de tamaño de ventana.

– Se envía como datos normales.

• No como datos urgentes, en sentido cliente->servidor hay menos

tráfico.

• Consiste en intercalar en el flujo de datos lo siguiente:

– Dos bytes 0xFF (para distinguirlo de otros datos).

– Dos bytes que corresponden al código ASCII del carácter “s”.

– 16 bits con el número de filas (p.ej. 25).

– 16 bits con el número de caracteres por fila (p.ej. 80).

– 16 bits con el número de pixels en X.

• normalmente se deja a 0.

– 16 bits con el número de pixels en Y.

• normalmente se deja a 0.

TERMINAL REMOTO

Pág. 12

RLOGIN: Caracteres especiales

• Otros caracteres especiales:

– Interrupción (Control-C):

• Se pasa al servidor sin hacer (en principio) ninguna acción.
• Interrumpirá, por tanto, el proceso que estemos ejecutando en

el servidor.

– Secuencias de escape en el cliente:

• Sirven para “hablar” directamente con el cliente de RLOGIN.
• Son el carácter ~ (justo después de un <CR>), seguido de:

– un punto: termina el cliente.
– EOF (Control-D): termina el cliente.
– Control-Z: suspende el cliente.
– Control-Y: suspende sólo la entrada pero no la salida.

• Puede servir si ejecutamos un programa muy largo en el
servidor, del que nos interesa su salida, pero queremos
seguir ejecutando otras cosas en el cliente.

TERMINAL REMOTO

Pág. 13

RLOGIN: Ejemplo 1

Establecimiento de conexión

TERMINAL REMOTO

Pág. 14

RLOGIN: Ejemplo 2



La captura se inicia cuando
hemos hecho:

– cat fichero_largo

– ^S

• En el instante 7.066859

hacemos:

– ^C

• En este momento el estado de

los buffers de recepción en
cliente y transmisión en servidor
es:

TERMINAL REMOTO

Pág. 15

TERMINAL REMOTO

Pág. 17

TELNET: Network Virtual Terminal

• Diseñado para conectar cualquier host (cualquier S.O.) a

cualquier terminal.

• Una conexión TCP puerto 23.

• RFC 854 - Telnet Protocol Specification (1983)

– Define el NVT (Network Virtual Terminal).
– Terminal imaginario:

• orientado a carácter.
teclado + impresora.


– lo que el usuario escribe en el teclado se envía al servidor.
– lo que manda el servidor al cliente, se escribe por la impresora.

– Se intercambian caracteres NVT ASCII, codificados con 8 bits.

• 128 primeros caracteres ASCII, con bit 8=0 (también conocido por US

ASCII).

– 95 imprimibles.
– 33 control (NUL(0), BELL, CR, LF...).
– Fin de línea como dos caracteres: CR LF.

• Bytes con bit 8=1 se usan para comandos.

– Tanto el cliente como el servidor deben adaptar sus terminales

reales a este terminal imaginario.

TERMINAL REMOTO

Pág. 18

TELNET: Comandos

• Señalización “en banda” en ambos sentidos.

– Entremezclada con los datos, no usa datos urgentes de TCP

con excepción del comando DM (lo veremos después).

• Comandos: se envían como dos (o más) bytes.

– Byte 0xFF (255 en decimal).

• Se conoce como byte IAC (“interpret as command”)

• El usuario no podría enviar este byte (no es NVT ASCII)

– Siguiente byte indica cuál comando (ver siguiente

transparencia).

– Dependiendo del comando concreto, puede haber más

bytes.

TERMINAL REMOTO

Pág. 19

TELNET: Comandos

236 EOF (end of file)

246 AYT (are you there?)

237 SUSP (suspend current job)

247 EC (escape carácter)

238 ABORT (abort process)

239 EOR (end of record)

240 SE (subpotion end)

241 NOP (no operation)

242 DM (data mark)

243 BRK (break)

248 EL (eras
  • Links de descarga
http://lwp-l.com/pdf16142

Comentarios de: Servicio de terminal remoto (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

Revisar política de publicidad