SSH y los "host conocidos" en Mac OS X

15/02/2010 por Redacción

Tengo la "mala costumbre" de usar las conexiones SSH a través del Terminal para controlar ciertos servidores. Nada muy técnico, simplemente ejecutar una serie de comandos para el mantenimiento y gestión, así como el control de los recursos consumidos cuando los servidores se ponen "tontos".

Una de las cosas que sueles recibir la primera vez que te conectas a un servidor por SSH es el aviso de que la autenticidad del host no puede ser verificada. El usuario puede aceptar la llave RSA que ofrece el servidor para convertir ese servidor en fiable ya que si no, cada vez que intentáramos conectarnos al mismo recibiríamos el mismo mensaje.

El problema es cuando, con la misma IP, el hardware de un servidor cambia y se recibe un mensaje terrible que implica un ataque "man-in-the-middle" ... pero vayamos por partes.

las claves RSA

En criptografía, RSA es un sistema criptográfico de clave pública desarrollado en 1977 por ingenieros estadounidenses. En la actualidad, RSA es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente.

La seguridad de este algoritmo radica en el problema de la factorización de números enteros. Los mensajes enviados se representan mediante números, y el funcionamiento se basa en el producto, conocido, de dos números primos grandes elegidos al azar y mantenidos en secreto. Actualmente estos primos son del orden de 10 elevado a 200, y se prevé que su tamaño aumente con el aumento de la capacidad de cálculo de los ordenadores.

Como en todo sistema de clave pública, cada usuario posee dos claves de cifrado: una pública y otra privada. Cuando se quiere enviar un mensaje, el emisor busca la clave pública del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, este se ocupa de descifrarlo usando su clave privada.

Se cree que RSA será seguro mientras no se conozcan formas rápidas de descomponer un número grande en producto de primos. La computación cuántica podría proveer de una solución a este problema de factorización. [WIkipedia]

El mensaje que recibes

El mensaje que recibes del servidor, al intentar conectarte vía SSH por el Terminal reza tal que así:

$ ssh usuario@dominio.com

The authenticity of host 'dominio.com (xx.xx.xx.xx)' can't be established.

RSA key fingerprint is x6:90:x0:3a:x3:7b:81:74:64:eb:08:49:7e:0a:15:24.

Are you sure you want to continue connecting (yes/no)?

Este no es un mensaje que implique que ocurre algo malo: simplemente Mac OS X no conoce al ordenador al que vamos a conectar y solicita que nosotros tomemos la decisión de conectarnos a el.

Si decidimos que si, hemos de escribir la palabra yes para recibir a continuación un mensaje similar a este:

Warning: Permanently added 'dominio.com' (RSA) to the list of known hosts.

Al añadir permanentemente la llave RSA asociada a un dominio, ya no nos aparecerá mas el mensaje y Mac OS X da por sentado que ese servidor "es bueno".

Cuando cambia el hardware y/o el software del servidor

El problema, sin embargo, llega cuando el servidor, que mantiene el mismo dominio, cambia debido a múltiples circunstancias: una de las mas habituales es que el usuario ha cambiado su plan de alojamiento y consecuentemente ha cambiado el hardware/software que lo aloja.

Al intentar conectar vía SSH, resulta imposible y recibimos un mensaje indicándonos que es imposible.

La solución implica eliminar la entrada del correspondiente dominio de un archivo que no es visible. para ello, iremos en el Finder al menú Ir y nos desplazaremos hasta la opción Ir a la Carpeta (o utiliza el atajo de teclado ⌘ + mayúsculas + tecla G) y teclearemos la siguiente ruta /Users/tu_usuario/.ssh. Esta carpeta no la vas a encontrar con el Finder porque está oculta a la vista (lleva un punto delante del nombre y eso la hace automáticamente invisible a nuestros ojos)

Allí encontrarás un archivo que se llama known_hosts: es el archivo en el que se encuentran almacenados los dominios con su correspondiente clave RSA: ábrelo con un editor de textos como Textwrangler y busca la línea que corresponde al dominio en la que pondrá:

dominio.com, xxx.xxx.xxx.xxx ssh-rsa

La IP (xxx.xxx.xxx.xxx) puede ser opcional

Selecciona esa línea y las líneas inferiores llenas de números sin sentido que hay debajo hasta la siguiente línea en la que aparezca un dominio. Bórralas, guarda el archivo y ciérralo.

Ahora, a continuación, podrás conectarte por SSH de nuevo al servidor, y se te volverá a preguntar si aceptas la nueva clave RSA. Solo tendrás que aceptar y volver a trabajar con el servidor como si no hubiera pasado (casi) nada.

Comentarios

  • avatar
    #1 Anónimo el 15/02/2010
    muchas gracias por el aporte, es muy útil.
  • #2 macdc el 15/02/2010
    A mi me gustaría saber por qué dejó de funcionar el "rcp" a partir de Leopard!

    Ejemplo:
    mac1:~/mesa user$ rcp prueba.c mac2:mesa
    rcp: unknown user 502

    ¡Y gracias por el artículo!
  • #3 Administrador el 15/02/2010
    El problema creo que radica en que Eclipse está basado en Carbon bajo SWT (Standard Widget Toolkit), y no hay mucho interés en pasar a Cocoa el entorno.

    Tienes información sobre este tema y algunos enlaces donde dirigirte en <a href="http://www.networkworld.com/columnists/2007/121107-dr-internet.html">este enlace</a>


    ---------------
    www.faq-mac.com
  • #4 macdc el 15/02/2010
    Perdón, me refería al "remote copy program", que viene un poco al hilo de ssh. Yo utilizaba mucho rcp para hacer copias de ficheros entre macs y también "rcp -rp" para directorios. Cuando configuras el fichero /etc/hosts.equiv los servicios R (rsh, rcp y rlogin) van como la seda, ya que te permiten interactuar entre máquinas sin necesidad de poner ninguna contraseña.

    Pero aún así, gracias, de veras.
  • #5 Falken el 16/02/2010
    Para copiar de una maquina a otra (no todas mis maquinas son mac pero si son UNIX o UNIX-Like y no siempre copio desde la LAN interna por lo que la conexion vaya cifrada para mi no tiene precio).

    En Leopard usaba un programa (que no recuerdo su nombre) que funcionaba junto con MacFuse que montaba las unidades externas mediante scp (dejo de ir bien en Snow Leopard y deje de usarlo).

    La sintaxis de scp es:

    scp usuario@ordenador_remoto ruta_local para archivos simples.
    scp -r usuario@ordenador_remoto ruta_local para directorios enteros.

    Por si te puede ser util.

Escribe un comentario

Regístrate o identifícate para poder comentar