2008-08-05

SSH por llave desde Linux y win

Debido a mi trabajo me toco aprender como generar llaves que permitan el acceso a los servidores desde equipos con windows, obviamente yo no solo voy a explicar como se usa con eso sino tambien como se usa con linux.

Primero vamos a pensar que estamos en el servidor y que hay que generar la llave, por que dejar una conexión ssh por contraseñas es peligrosisimo, para nuestro ejemplo vamos a usar llaves del tipo rsa que son las mas seguras en la actualidad, obviamente debes tener instalado los paquetes de ssh, para crearla usamos el siguiente comando

root@server:~#ssh-keygen -t rsa

El nos va a preguntar lo siguiente

Generating public/private rsa key pair.
Enter file in which to save the key (/root
/.ssh/id_rsa):

Hay si queremos lo dejamos por defecto sino le colocamos un nombre a la llave eso si dando la ruta ejemplo /root/.ssh/guason, hay te va a pedir una frase, si una frase puede ser con espacion como quieras, de la siguiente forma

Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):


y te pide repetirla, si las cosas quedaron bien te debe salir lo siguiente

Your identification has been saved in /root/.ssh/guason.
Your public key has been saved in /root/.ssh/guason.pub.

The key fingerprint is:
10:61:f9:2b:12:01:4f:75:eb:32:a1:df:e6:23:fa:5d root@server

Listo ya tienes la llave creada, ahora viene el como configurar el ssh para que este sirva, entras a /etc/ssh/sshd_conf y tienes que asegrarte que estas lineas queden así

RSAAuthentication yes
PubkeyAuthent
ication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

Bueno despues de esto reinicias el ssh. Como pudiste ver la llave dijiste que se llamaba authorized_keys, se puede llamar como quieras, peor lo importante es que en el .ssh lo dejes tal cual esta ahi, ahora cual de lo dos archivos modificar es la pregunta, bueno la respuesta es el terminado en .pub, de la siguiente forma:

root@server:~#mv .ssh/guason.pub .ssh/authorized_keys

si quieres probala en el servidor haces lo siguiente

root@server:~#ssh -i /root/.ssh/guason localhost

Te debe conectar si lo hiciste bien, te preguntaras que es ese -i es la opción para decirle que llave usar, por eso la sigue la ubicación de la llave.

Bueno ahora la conexión remota, empezaremos con lo ideal y lo mejor si con LINUX, super sencillo, copias la parte privada de la llave llamada guason en el archivo .ssh del PC que vas a usar para conectarte y le asignas los permisos adecuados, eso de la siguiente forma

user@pc:~$cp /origen/guason /home/user/.ssh # lo de origen es desde donde la pienses copiar user@pc:~$chmod 600 /home/user/.ssh/guason # Cambias los permisos

Listo ahora para usarlo debes hacer lo siguiente

user@pc:~$ssh -i /home/user/.ssh/guason -l root IP_SERVER

bueno la opción -i como ya lo explique es para decirle donde esta la llave a usar si tienes varias, y la opción -l es para conectarte con un usuario diferente al tuyo, para este ejemplo e usuario se llama user pero tu te vas a conectar al server como root. El te va apedir que aceptes la llave le escribes que yes y listo estas adentro sin lios, ves facíl.

Ahora viene lo mamon con win, acá los procedimientos se tiplican pero nada que hacer, primero que todo debes bajar los paquetes de PuTTY y PuTTYGen para poder tener un emulador de ssh en win por que por defecto no lo trae, estos los consigues aquí, bueno ya con esos dos paquetes en el PC guardas tambien la parte de la llave llamada guason, la parte que es la privada, todos en una misma carpeta preferiblemente. Ahora abres el PuTTYGen y debes ver lo siguiente



Listo hay le das en Load, y te va a pedir que selecciones un archivo, como win cree que todo son extensiones entonces no vas a ver la llave, pero le dices que te muestre todos los archivos y listo hay ves la llave en mi caso guason y des ver lo siguiente

Si en efecto te pide la frase con la creaste la llave, este procedimieto se hace para convertir la llave del protocolo ssh en una llave entendible para win, por medio de PuTTY.

Bueno cargandola hay en la parte que dice key van a salir una ventanita que te dice que la llave fue satisfactoriamente tarida que si quieres aceptar y solo te da la opción de Aceptar, entonces adivina que hay que hacer, bueno pero se va a activar una opcion que dice Save Private Key y le das hay, debes ver algo como lo siguiente






Bueno después de darle ese comando puedes cerrar la aplicación, para este ejemplo puse todo en el escritorio, por lo que veras que la llave generada se llama guason.ppk, en la imagen de la derecha





Listo ahora la otra aplicación el PuTTY, si por que hasta ahora realmente no hemos hecho nada, solo cambiar la codificación de la llave, bueno abres la aplicación y veras lo siguiente


Como puedes apreciar hay una parte que dice IP o Host name, hay colocas la dirección o el nombre del server, si el mismo que por consola le colocamos anteriormente IP_SERVER, despues de eso en la parte derecha de esa pantalla hay una seccion que dice SSH, en la parte inferior, la seleccionas y te debes asegurar que dija lo siguiente:

Bueno despues de asegurarte que esta así como la imagen de la izquierda, sacas el contenido de la sección de SSH y veras una que se llama Auth, hay veras lo de la imagen de la derecha, y por medio del Browse buscas la llave que generamos con PuTTYGen, y la colocas hay, le das Open y si todo lo tienes bien te debe salir lo que sigue:



Bueno por fin estas adentro ahora le das el usuario, el vuelve y te pide la frase y listo te conectaste, como lo puedes ver a continuación