SSH y los "host conocidos" en Mac OS X
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.






Ejemplo:
mac1:~/mesa user$ rcp prueba.c mac2:mesa
rcp: unknown user 502
¡Y gracias por el artículo!
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
Pero aún así, gracias, de veras.
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.