Introducción a SSH

Imagen extraida de openssh.com

 
¿Que es SSH? (Secure SHell ó interprete de ordenes seguro) es el nombre que se le da a un protocolo y al programa que lo implementa, sirve para acceder a maquinas remotas a través de una red. Permitiendo manejar la computadora mediante una shell, inclusive redirigir el tráfico de X para ejecutar programas gráficos si tenemos ejecutando un Servidor X tanto en sistemas Gnu/Linux (aka. Linux) donde nos centraremos y Windows.

X o Servidor X o Sistema de Ventanas X (en inglés, X Window System) es un software que fue desarrollado a mediados de los años 1980 en el MIT para dotar de una interfaz gráfica a los sistemas Unix. Este protocolo permite la interacción gráfica en red entre un usuario y una o más computadoras haciendo transparente la red para éste. Generalmente se refiere a la versión 11 de este protocolo, X11, el que está en uso actualmente. X es el encargado de mostrar la información gráfica de forma totalmente independiente del sistema operativo.

Comenzamos por instalar SSH si no lo tuvieramos ya en nuestra distro favorita.
En Arch/Manjaro

sudo pacman -S openssh

En Debian/Trisquel

sudo aptitude install openssh-client

En CentOS 6

sudo yum install openssh-client

openssh es una versión libre de las herramientas de conectividad SSH, ofrece capacidades de túneles seguros y varios métodos de autenticación, y es compatible con todas las versiones del protocolo SSH. Además funciona en la mayor cantidad de S.O posibles, para lograr existe un equipo, llamado OpenSSH Portability Team que se responsabiliza de añadir el código necesario para portar el software a todas las plataformas posibles. Algunos proveedores como NetApp, Netflix, EMC, Juniper, Cisco, Apple, Red Hat y Novell lo incluyen en sus productos; pero es muy probable que también lo incluyan casi todos los router, switch o proveedores de S.O tipo Unix. Incluye aplicaciones como ssh, scp, sftp, sshd, ssh-keygen, ssh-agent, ssh-add y ssh-keyscan.

Luego de una pausa por algo de historia, continuamos. Terminada la instalación lo que necesitamos es generar 2 claves, una privada y una pública. La privada se queda en la maquina personal debiendo ser protegida de miradas curiosas y la pública es la que ayuda a tu maquina a conectar a otra remota, cargándose en ella. La maquina remota reenvía una “pregunta” a tu maquina, para poder vincularse con la clave privada e identificarse adecuadamente; asegurando el transito ida y vuelta de datos.
Para generar las claves usaremos ssh-keygen, a continuación una simulación gráfica del resultado de usarlo:
Nos pide una ubicación para guardar las keys, [enter] para seleccionar la sugerida, passphrase (contraseña) si queremos ingresamos una o no, dado que se usara cada vez que se pida ingresar la clave privada para identificarse (doble paso de identificación, así que decidan lo mejor para su caso)[enter], repetimos la passphrase [enter] y ya nos dará las ubicaciones de nuestras claves, privada y pública, luego veremos el fingerprint en SHA256 y listo.

Para conocer nuestra clave publica y privada, bastaría con usar el comando cat en la terminal. La clave pública se debe colocar dentro de las ~ / .ssh / authorized_keys en el directorio home del usuario que desea utilizar en la máquina remota.

clave privada

cat /ubicacion_donde_guardo_las_llaves/.ssh/id_rsa 

clave pública

cat /ubicación_donde_guardo_las_llaves/.ssh/id_rsa.pub
ssh-rsaAAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSUGPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XAt3FaoJoAsncM1Q9x5+3V0Ww6/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/EnmZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbxNrRFi9wrf+M7Q/cr0n0s@Mayea

La clave publica se copia, y se da a una persona que tiene acceso a la máquina remota. Digamos que el nombre del usuario remoto que desea usar cuando se conecta a la máquina es Pepo. El contenido de su clave pública debe entonces anexarse al archivo /home/Pepo/.ssh/authorized_keys. Esa tarea se puede lograr con el siguiente comando en la máquina remota:

echo “ssh-rsa BBBB3NzaC1yc2EAAAADAQABAAABAQCv9Gz2XJ9Rl6WzcFX0hvmm4Ipjwr2KoaX5i7SqUrn7hAg87cmCGVmvIarE5u8WJYADeRo1QN/ySNnxQkGq9h2qSYK9rnT4M5s280lg9R+YdEkAKf7HzQKSA+QVxnyvV0uLvZKtUHw13gjFCRBCd5BFCYQQ2jsz2DVpXbw58ZIJtlO6Ev3V9+HX3EqR6Q7IVNCjb9HgJql9yKZOvRk+IAlyjpIcVCgDoKYsTjsTA4aSIDqVevenmnYNsk4jFiqcJeHKoEyByoqEkt2NcU0EAG+Ff2pHg5du32Y+iSdF2d/hIMoYikXnX17hpFxXR1+9H02NP76cmzt9IxlEtsGJWYxh cr0n0s@Mayea” >> /home/Pepo/.ssh/authorized_keys.

Una vez que haya configurada correctamente su clave SSH pública en un host remoto, ya eres capaz de acceder a la máquina mediante la ejecución del comando ssh en su terminal local.
Por ejemplo, si 1.3.2.4 es la dirección IP de la máquina remota, puede crear una conexión SSH a él utilizando el comando:

ssh Pepo@1.3.2.4

La primera vez que te conectas a la máquina remota, ssh pedirá su permiso para poner la huella digital de la máquina remota en tu archivo local ~ /.ssh/known_hosts.

The authenticity of host ‘1.3.2.4’ can’t be established.
RSA key fingerprint is 12:23:34:56:21:g3:g9:93:86:af:4r:bb:11:5d:f8:h9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘1.3.2.4’ (RSA) to the list of known hosts.

La primera vez que te conectas al host remoto (servidor) se responder YES para continuar.
La pregunta anterior es una parte integral del mecanismo SSH, y protege de usuarios malintencionados que quieren “sniffear” tus datos a través de la red. La huella digital (fingerprint) es una manera de identificar una máquina remota. Si la huella digital del servidor remoto cambia, la próxima vez que se conecte a la máquina, ssh imprimirá un mensaje de advertencia en la que te advierte de un posible ataque man in the middle.
Claro esta que si se recibiera el mensaje de advertencia, lo primero a hacer es comunicarse con el sysadmin para determinar si la huella digital ha cambiado realmente, o si alguien está tratando de escuchar en su conexión. Hola NSA :-P, en su defecto podrán ingresar normalmente a su sesión SSH.
Ya dentro de la sesión remota pueden usar comandos caracteristicos, ls, cat, etc, claramente mostrando lo perteneciente al escritorio remoto; para finalizar la sesión remota es suficiente con un [exit] o un [logout] desconectandonos del host remoto.
Para mayores alcances sobre OpenSSH es bueno visitar MAN page de SSH. Hasta aquí esta pequeña contribución, hasta otro post lectores y buenas vibras.
Anuncios

One comment

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