Secure Shell es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red.

SSH usa técnicas de cifrado que hacen que la información que viaja por el medio de comunicación vaya de manera no legible, evitando que terceras personas puedan descubrir el usuario y contraseña de la conexión, ni lo que se escribe durante toda la sesión, y utilizando claves ssh nos permite acceder a servidores sin necesidad de utilizar una contraseña.

Pero en realidad en Debian, Ubuntu y derivadas, no estaremos usando SSH, sino OpenSSH (Open Secure Shell), que permite hacer lo mismo pero fue creado como una alternativa libre y abierta al programa Secure Shell, que es software patentado.

Después de esta introducción voy a explicar como usar ssh para acceder a servidores desde un equipo que tenga instalado Debian, Ubuntu, o una derivada de estos, ya que como comenté en el post del aniversario he decidido cambiar el blog a un servidor en Digital Ocean, y se recomienda el uso de ssh con clave pública para conectarse de forma segura.

Si además queréis probar los servidores de esta empresa, podéis usar mi referrals para ahorraros 10 $, lo que os permitirá usar el paquete básico casi dos meses.

Como usar ssh creando clave ssh
Lo primero que tenemos que comprobar en nuestro equipo, es que tenemos instalado el programa Openssh, y si es necesario instalarlo tecleando:

Y si no tenemos la carpeta oculta .ssh en nuestra Carpeta personal la creamos con el comando

Para crear una clave ssh en un sistema Debian, Ubuntu y derivados debemos usar el terminal, y en él teclear:

Nos pide un nombre, se lo ponemos para identificarla, o lo dejamos en blanco.

A continuación nos pregunta si queremos usar una contraseña, o dejarlo en blanco. Si le ponemos una contraseña, cuando queramos utilizar nuestra ssh key, nos preguntará por esa contraseña, esto añade seguridad, si perdemos nuestros ficheros de clave, o alguien accede a nuestro equipo y nos las roba.

A continuación nos pide que confirmemos la contraseña, o de nuevo la dejamos en blanco.

Lo siguiente es que ya tenemos nuestra clave ssh creada, y nos saldrá un mensaje similar a este:

Your identification has been saved in jvaressh.
Your public key has been saved in jvaressh.pub.
The key fingerprint is:
4e:38:8e:52:8d:5d:86:ff:2e:6c:db:f6:85:85:62:c9 jvare@jvare
The key’s randomart image is:
+–[ RSA 2048]—-+
| |
| . |
| . o |
| + = . . . |
| o = S E . . |
| . o + o . o |
| . . … . . . |
| . +o. . |
| ..+o.. |
+—————–+

O sea que se crean dos ficheros, uno con el nombre que le hemos dado, que es la clave privada y no la debemos compartir con nadie, y un segundo que tiene la extensión .pub, que es la clave pública que es la que vamos a enviar a los servidores a los que nos queremos conectar.

Lo normal es que estos dos ficheros que se crean, lo hagan en la carpeta oculta que creamos antes con el nombre .ssh. Pero puede ocurrir que se creen en la carpeta principal del usuario. En este caso debemos moverlos a la carpeta .ssh. Fijarse que en Linux al llevar la carpeta un punto al principio quiere decir que es una carpeta oculta, y que es necesario marcar ver los ficheros ocultos para verla.

Tenemos la clave, veamos como usar ssh para acceder a servidores

En Digital Ocean cuando creamos nuestro servidor, en uno de los pasos finales nos pedirán que peguemos la clave ssh pública que vamos a utilizar. El listado de caracteres de la clave pública debe ser copiado sin espacios, lo que no se consigue con cualquier editor de texto. Para ello lo mejor es utilizar el comando cat en terminal, que lo haremos sobre el fichero con extensión .pub, y tendremos una lista de caracteres que son los que seleccionamos para hacer el correspondiente copia pega, usando el ratón, o con los comandos Ctr c, y Ctr v.

Como usar ssh pegando con cat clave pública

Para conectarnos al servidor usando nuestra clave ssh tenemos que escribir en el terminal

Copiar clave pública ssh directamente a un servidor

Si queremos añadir nuestra clave pública para conectarnos a través de ssh a otro servidor, o a un usuario diferente creado en nuestro servidor, podemos hacerlo utilizando el comando: ssh-copy-id.

De tal manera que si queremos copiar nuestra clave ssh al servidor 192.168.1.65 para el usuario jvare debemos utilizar el comando:

Nos pedirá la contraseña de usuario del servidor, y se añade la clave pública al servidor. Nos debe dar un mensaje: Number of key(s) added: 1.

A partir de ahora ya podemos conectarnos sin necesidad de escribir la contraseña cada vez, para el ejemplo anterior en nuestro equipo escribimos:

Si nuestro servidor tiene acceso desde internet, debemos añadir algunos parámetros de seguridad, editando el fichero del servidor: /etc/ssh/sshd_config con el editor nano o con otro editor de texto.

La conexión normal de ssh es el puerto 22, por lo que debemos cambiarlo por uno diferente por encima del 1024, también limitaremos el tiempo de espera para introducir la contraseña, y el número máximo de veces, el número de sesiones simultaneas, y negar la conexión como usuario root.

También podemos eliminar la posibilidad de conexión a través de contraseña, pero Atención, si perdemos el fichero de nuestro servidor: authorized_keys que está en la carpeta .ssh de nuestro usuario, no nos podremos conectar, puesto que hemos bloqueado el acceso.

Para activar los cambios, en el servidor escribimos:

Y para el ejemplo anterior ahora tendríamos que escribir en nuestro equipo para conectar al mismo servidor:

Visto como usar ssh para conectarse a través de terminal, también es posible realizar una conexión segura a través de ftp. Para ello podemos usar Filezilla usando el protocolo y nuestra clave ssh, pero la explicación de como configurarlo, lo dejo para el siguiente articulo.

Este articulo se ha realizado con información entre otros de:

La mirada del replicante
Linux GNU blog
José Arrarte
Wikipedia.org

JVareGNU/LinuxUbuntulinux,Openssh,Servidores,sshSecure Shell es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. SSH usa técnicas de cifrado que hacen que la información que viaja por el medio de comunicación vaya de manera no legible, evitando que...Gnu/Linux, Manuales de Hardware, y mas.