#4sysadmins

Inicio » GNU/Linux » Acceso ssh sin usar contraseña

Acceso ssh sin usar contraseña

Últimas Entradas

Follow #4sysadmins on WordPress.com

Accediendo vía SSH

Para acceder a un servidor remoto bajo ssh es tan sencillo como instalar el paquete OpenSSH client y ejecutar el siguiente comando:

$ ssh usuario@maquina

A continuación, si es la primera vez que accedemos al sistema remoto se nos pedirá confirmación, de manera que tras introducir la clave del usuario, la clave pública de la máquina remota será guardada en nuestro llavero de claves públicas (~/.ssh/known_hosts). El resto de las veces no se nos pedirá confirmación pero si la clave del usuario remoto.

Este sería el método normal para acceder bajo SSH a un sistema remoto. No obstante, existen otras formas para acceder sin hacer uso de una password, de manera que podamos loguearnos a través de por ejemplo tareas automatizadas con shell scripting.

Uso de ssh-Agent

Otra opción para conectar es emplear el programa ssh-agent el cual solicitará una contraseña (passphrase) para iniciar las conexiones.

Para utilizar ssh-agent deberemos de seguir unos pasos sencillos pero necesarios:

1 . Desde el sistema cliente (el que utilizaremos para conectarnos al servidor remoto) generaremos una clave SSH versión 2 (rsa y dsa, o rsa1 para versión 1):

$ ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -C ''
2 . Se nos pedirá una frase (passphrase) de contraseña la cual será la que utilicemos para futuras conexiones:

3 . Ahora será el momento de acceder al servidor remoto:

 $ ssh usuario_remoto@servidor

Escribiremos la contraseña del usuario_remoto accediendo ya al servidor. Ahora copiaremos el contenido de nuestro archivo id_rsa.pub (creado en el paso 1) al final del archivo ~/.ssh/authorized_keys o ~/.ssh/authorized_keys2 (anillo de claves públicas) del directorio /home de usuario_remoto. Si no existiese ninguno de estos dos archivos deberíamos de crear uno de ellos.

Nota: Puede que en algunos sistemas tengamos que cambiar los permisos del archivo ~/.ssh/authorized_keys y directorios. Normalmente es suficiente con eliminar los permisos de escritura (0600) y asegurándonos de que el propietario es usuario_remoto.

4 . Ahora ya podremos usar ssh-agent desde el sistema cliente. Para ello ejecutaremos

$ ssh-agent /bin/bash

Esto abrirá un nuevo shell dentro del que hemos usado para ejecutar este comando. No notaremos nada, solo si vemos los procesos ejecutados podremos ver el nuevo proceso creado:

ssh-agent

Desde esta ‘sesión‘ escribiremos primeramente ssh-add ~/.ssh/id_rsa para añadir nuestra clave RSA al conjunto gestionado por ssh-agent. Se nos pedirá que introduzcamos la frase/clave que introducimos al crear el par de claves en el paso 1.

Aviso: Cada vez que queramos volver a realizar accesos al sistema remoto al que hemos facilitado nuestra clave pública no deberemos de dar la contraseña del usuario remoto, pero si que tendremos que repetir el paso 4.

Si utilizamos este sistema con frecuencia desde nuestro usuario local, podemos hacer que cada vez que se inicia bash lo haga ejecutando ssh-agent. Esto podemos lograrlo modificando /bin/bash por ssh-agent /bin/bash en la línea de nuestro usuario del archivo /etc/passwd.

Acceder sin contraseñas

Hemos pasado de acceder a un host remoto bajo credenciales (usuario y contraseña) de un usuario específico de ese sistema, a acceder con un usuario del sistema pero sin que se nos solicite mas clave que una propia creada cuando generamos nuestra clave pública. Lo siguiente es ya acceder directamente sin esa clave, es decir, conectaremos contra un host remoto sin que se nos solicite ningún tipo de password, ni la del usuario remoto, ni la nuestra propia.

Para conseguir esto, podremos recurrir a estas dos opciones:

A. Realizaremos el paso 1, y 3 vistos anteriormente cuando utilizábamos ssh-agent. En este caso el paso 1 debe modificarse añadiendo la opción -N ‘ ‘ quedando así:

$ ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -C '' -N ''

Nos hemos saltado el paso 2 puesto que con este comando no se nos solicitará ninguna clave. En el paso 3 todo igual, el usuario de la máquina remota (usuario_remoto en nuestro ejemplo) debe tener el contenido de nuestra clave pública en su archivo de autorización, normalmente ~/.ssh/authorized_keys

Si ahora salimos del servidor remoto y volvemos a entrar no se nos pedirá ningún tipo de contraseña.

B. Esta forma es aún mas sencilla. Haremos uso del comando ssh-keygen y de ssh-copy-id (con este último, evitaremos tener que entrar al servidor remoto y copiar el contenido de nuestra clave pública en el archivo de autorización del usuario_remoto, es decir, realizar el paso 3 de ssh-agent de forma automática)

1 . Creamos nuestro par de claves:

$ ssh-keygen -b 4096 -t rsa

donde:

-b genera una clave de 4096 bits, por defecto (si no usamos -b) se generará de 2048, que suele ser suficiente.

-t indica el tipo de clave, en nuestro caso rsa para protocolo 2

Nota: Deberemos de pulsar tres veces [ENTER]

2 . Copiamos de forma automática nuestra clave pública en un equipo remoto para un usuario específico, tal que así:

$ ssh-copy-id usuario@ip_del_equipo

En este paso se nos pedirá el password de “usuario”. Con esto habremos acabado. El resto de veces que queramos acceder a esa máquina con ese usuario, NO, se nos solicitará password ni passphrase. Esto resulta muy útil cuando tenemos tareas programas con shell scripts que pretenden acceder a un servidor remoto de forma automática.

Anuncios

Deja un comentario, Gracias!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: