Home

Conectar por SSH (con seguridad rsa) desde Windows a LINUX Ubuntu Server (variante 2)

webmaster's picture

Este artículo explica como generar claves de autenticacion RSA con codificación solo rsa para conectar por ssh utilizando Putty desde windows XP o windows 7 a un Servidor LINUX, en nuestro caso Ubuntu  Server 12.04.3 LTS. También se explica la transferencia de ficheros de la clave publica desde windows a linux utilizando scp.

El clientes ssh para windows que uso es Putty, hay otros, pero el mas simple y el que mas me gusta es ese. Putty es un cliente ssh creado por los de OpenSSH para sistemas windows. Permite SSH1 y SSH2, pero no solo eso, también nos permite entre otras cosas utilizar un programa llamado PSCP que nos da la funcionalidad de scp, copias seguras de archivos entre servidores. Desde la página web Putty Download Page se pueden descargar todas las utilidades necesarias para realizar este proceso

Una vez descargadas las ubicamos en una carpeta lo mas proximo a nuestra carpeta raiz por ejemplo: C:\Putty y desde alli realizaremos todas las operaciones con sus programas.

Utilizaremos el puttygen.exe para generar las claves tanto locales como publicas para utilizarlas en nuestra conexion al LINUX Server. Una vez abierto, seleccionamos el tipo de encriptación RSA y de damos al botón generate. Ojo! tendremos que mover el ratón por la zona de la barra para que el programa funciones y genere la clave.

Al final nos sale las claves generadas.

Nos facilita la zona de Key passphrase para poder proteger los ficheros que se van a grabar en caso de que alguien los quiera utilizar para suplantar la identidad.

Le damos al botón de “Save private key” y la guardamos en nuestro pc, en la misma carpeta donde estan el putty.exe. La clave privada, no debe salir de vuestro ordenador, ni copiarla en otro sitio. Ya lo indica el nombre: clave privada!

La clave publica la salvamos con el botón "Save public key " y es la que copiaremos en nuestro servidor.

Hay que recordar que las claves se crean para un usuario en particular, de manera que un usuario puede tener diferentes claves publicas de distintos ordenadores.

Para copiar la clave publica al servidor LINUX, utilizaremos el programa pscp.exe desde la linea de comandos de Windows situado en la carpeta donde tenemos ubicados las utilidades anteriormente mencionadas. Debemos tener claro a que usuario del servidor LINUX le vamos a dar permisos, por ello el comendo pscp debe ir acompañado de una serie de parámetros para que sea depositado en la carpeta adecuada de ssh para el usuario en el servidor.

En nuestro caso el usuario en el LINUX Server se llama lazaro y el servidor esta en la direccion 192.168.0.46, por lo tanto deberia tener una carpeta /home/lazaro/.ssh que será el destino de nuestro fichero.

comando:

pscp -l lazaro -4 -scp publica.pub lazaro@192.168.0.46:/home/lazaro/.ssh/publica.pub

Al trasferir el fichero, al ser la primera vez, nos pregunta que si queremos guardar en el registro de la maquina local las credenciales de conexion al servidor para una sesion permanente si confiamos en la maquina remota. Contestamos "y". Si se trasnfiere con exito deberiamos tener una ventana parecida esta:

Hay que recordar que las claves se crean para un usuario en particular, de manera que un usuario puede tener diferentes claves publicas de distintos ordenadores.

Las claves publicas se añaden al archivo ~/.ssh/authorized_keys del usuario en concreto. Por ejemplo si tenemos un usuario que es lazaro, modificaremos /home/lazaro/.ssh/authorized_keys

Si no existe el archivo lo creamos y si existe guardamos tenemos que convertir la clave publica que hemos enviado a formato openssh e incorporarla al fichero authorized_keys de la siguiente forma.

# cd /home/lazaro/.ssh
# ssh-keygen -if publica.pub > publica_openssh.pub
# cat publica_openssh.pub >> authorized_keys

Con la redireccion de salida >> lo que hacemos es añadir al final del fichero sin sobreescribir lo que haya previamente.

Bien pues ya cuando logeamos con nuestro usuario lazaro ya no nos pide el password porque estaremos identificados con el sistema de clave publica/privada.

Ahora se debe configurar el servidor ssh, para que permita utilizar la utilizacion de clave publicas

sudo nano /etc/ssh/sshd_config

dejar descomentado RSAAuthentication, quedando de la siguiente forma:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

Por ultimo reiniciar el servicio

sudo service ssh restart

Conectarse  con el Putty

Para conectarse desde windows hay que hacer algunos ajustes en el clientes ssh PuTTy para que todo funcione perfectamente. Primeramente pondremos la ip del servidor LINUX

Posteriormente hay que indicarle donde esta la clave privada que hemos guardado en un sitio seguro de nuestro pc. Vamos al menú Connection -> SSH ->Auth y en la opcion: “Private key file for authentication” buscamos y seleccionamos la clave privada.

Después hay que decir con que usuario queremos que haga “auto-login” para no tener que teclear nuestro usuario, seguire con el ejemplo de lazaro.

Vamos al menu: Connection-> Data y en en menu auto-login username, ponemos nuestro usuario con el que queremos logear y para el que hemos creado las claves RSA, en este ejemplo lazaro

Salvamos toda la configuración y ahora cuando pulsamos en Open nos logea directamente en nuestro servidor LINUX sin tener que teclear usuario ni contraseña.

Observaciones

En algunos casos por haber generado la clave publica y privada con el puttygen.exe en la maquina windows al realizar todo el proceso anteriormente mencionado y utilizar el putty.exe para conectarnos, nos da un error "server refused our key". Eso es debido a que la clave publica se ha transmitido mal al servidor.

Como solucionamos este problema

Copiar la clave publica con Ctrl + C desde el Puttygen.exe a través del portapapeles e introducirla directamente dentro del fichero authorized_keys,  accediendo previamente por telnet al servidor LINUX y teniendo la ventana del editor vi o nano abierta. Con solo tocar la ventana del Editor vi con el botón derecho del ratón se pega intacto el código de la clave publica dentro del fichero que estamos editando

Salvamos el fichero authorized_keys después de editarlo

Por ultimo reiniciar el servicio

sudo service ssh restart

En caso de que con esto no funcionase, siempre nos queda recurrir al artículo Conectar por SSH (con seguridad rsa) desde Windows a LINUX Ubuntu Server (variante 1), que suele funcionar en la mayoría de las ocasiones.

Fuente: 

Centro Práctico - LEMUR SOLUTION

Contacto: 
webmaster