Conexión mediante SSH por password / par de claves

¡Buenas! hoy volvemos con una entrada sobre ssh, algo más específica que las que vimos anteriormente

https://encodingthecode.wordpress.com/?s=ssh

Vamos a ver cómo conectarnos con y sin password, copiado seguro… etc etc

Una conexión “normal”, con el protocolo TCP o UDP, no es segura, no está cifrada y puede ser “escuchada” mediante un Man in the middle, aquí es donde entra SSH, para establecer un túnel seguro entre dos máquinas.

Bien, partiremos de dos máquinas, cliente y servidor, en ambas debemos tener el paquete ssh instalado

sudo apt-get install shh

Y en el servidor el paquete openssh-server

sudo apt-get install openssh-server

También debemos tener un usuario en cada host para la conexión, en mi caso, crearé el usuario “usu1” en ambas máquinas, con el password “usu1usu1”.

Otra cosa importante, tanto en el servidor como en el cliente, vamos a crear una carpeta ssh.

mkdir /home/usu1/.ssh

Bien, vamos allá…

Lo primero que vamos a hacer es conseguir las direcciones IP de cada máquina:

ifconfig

En el servidor tenemos la ip 192.168.0.101, mientras que en el cliente la 192.168.0.108.

IMPORTANTE, hay dos ficheros primordiales de configuración, en el servidor: /etc/ssh/sshd_config , y en el cliente /etc/ssh/ssh_config. Cuidado con la ‘d’ del primer archivo ;).

Editamos el archivo /etc/ssh/sshd_config:

sudo gedit /etc/ssh/sshd_config

Nos vamos a la línea PasswordAuthentication yes, y la descomentamos (borramos el comodín de la izquierda ;), para buscar una cadena en el editor de textos –> Crtl + f).

Intentemos la primera conexión:

ssh usu1@192.168.0.101

Si nos da un error parecido al siguiente:

ssh: Could not resolve hostname usu1: Name or service not known
“” “”: Connection Refused

Probemos a deshabilitar el cortafuegos en el servidor

service iptables stop

o

/etc/init.d/iptables stop

Una vez hecho esto, si todo va bien, en la consola del cliente nos pedirá el password del usuario del servidor :), y listo, ya estamos logueados :).

Bien, ahora vamos a configurar nuestra conexión para conectarnos sin clave, lo que haremos será generar un par de claves, una publica y otra privada, y copiar la pública al servidor, en el caso de que se produzca una conexión, si no encuentra la clave pedirá contraseña, pero si la encuentra nos loguearemos sin introducir el password.

En el cliente (con el usuario usu1 –> su usu1) generamos un par de claves rsa de longitud 1024

ssh-keygen -t rsa -b 1024

Dejamos todos los parámetros por defecto, si por ejemplo cambiamos los nombres, habrá que cambiarlos también en los archivos de configuración, te recomiendo dejarlos tal y como los pongo aquí 😉

El usuario propietario de los archivos generados debe ser usu1, el directorio del cliente /home/usu1/.ssh debe tener permisos 700 y el archivo id_rsa 600:

chmod 700 /home/usu1/.ssh
chmod 600 /home/usu1/.ssh/id_rsa

Para asegurarnos que todo va bien, hagamos:

cat /home/usu1/.ssh/id_rsa.pub

Al final del fichero debe haber algo así como: usu1@nombrePC

Bien, una vez generada la pareja de claves, desde el cliente, vamos a copiar la pública al servidor, de la siguiente manera:

scp id_rsa.pub usu1@192.168.0.101:/home/usu1/.ssh/

(ese directorio en el servidor debe tener permisos de escritura para ‘otros’)

nos pedirá el password de usu1 y listo 😉

ahora si hacemos un ‘ls’ en la carpeta /home/usu1/.ssh del server encontraremos la clave copiada anteriormente 😉

El siguiente paso es introducir la clave en el fichero “authorized_keys” en el servidor que como su nombre indica, es el que contiene las claves autorizadas:

cat id_rsa.pub >> authorized_keys (en el directorio /home/usu1/.ssh)

Este archivo debería tener los permisos 644 😉

Vayamos al editar el archivo sshd_config del server y descomentamos las lineas:

RSAAuthentication yes
PubkeyAuthentication yes

Bien, reiniciemos el servicio y comprobemos si ahora nos pide login:

service sshd restart

En teoría, ya deberíamos poder loguearnos sin password, en el caso de no ser así, probad a regenerar las claves de nuevo, aseguraros de los propietarios y permisos de las mismas… etc..

Espero que haya sido de ayuda, para alguna duda, comentad 😉

HackSaludos!

Anuncios

Acerca de Darkvidhck

Estudiante de ingeniería informática, haciendo mis pinitos como desarrollador web, programador, gamer y Linuxero. Aficionado a la seguridad. Eterno viciado al conocimiento.
Esta entrada fue publicada en Servidores y etiquetada , , , , , , , . Guarda el enlace permanente.

Responder

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