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.
Lo primero que tenemos que comprobar en nuestro equipo, es que tenemos instalado el programa Openssh, y si es necesario instalarlo tecleando:
$ sudo apt-get install openssh-client
Y si no tenemos la carpeta oculta .ssh en nuestra Carpeta personal la creamos con el comando
$ mkdir -p .ssh
Para crear una clave ssh en un sistema Debian, Ubuntu y derivados debemos usar el terminal, y en él teclear:
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/jvare/.ssh/id_rsa):
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.
Enter passphrase (empty for no passphrase):
A continuación nos pide que confirmemos la contraseña, o de nuevo la dejamos en blanco.
Enter same passphrase again:
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.
$ cat /.ssh/jvaressh.pub
Para conectarnos al servidor usando nuestra clave ssh tenemos que escribir en el terminal
$ ssh usuario@ipdelservidor -p puertodeconexión
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:
$ ssh-copy-id -i .ssh/nombrekey.pub jvare@192.168.1.65
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:
$ ssh jvare@192.168.1.65
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.
$ sudo nano /etc/ssh/sshd_config
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.
Port 2212 LoginGraceTime 120 MaxAuthTries 2 MaxStartups 1 PermitRootLogin no ChallengeResponseAuthentication no PasswordAuthentication no UsePAM no
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:
$ sudo service ssh reload
Y para el ejemplo anterior ahora tendríamos que escribir en nuestro equipo para conectar al mismo servidor:
$ ssh jvare@192.168.1.65 -p 2212
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, para saber como configurarlo, puedes leer este articulo: Como configurar Filezilla para usar ssh.
Este articulo se ha realizado con información entre otros de:
La mirada del replicante
Linux GNU blog
José Arrarte
Wikipedia.org
Genial aporte! Una herramienta imprescindible para el día a día de cualquier administrador de sistemas. Otra herramienta es scp, primera hermana de ssh, que sirve para copiar ficheros utilizando ssh. Incluso rsync se puede configurar para utilizar ssh. Ya te he dado ideas para más artículos : )
Saludos!!
Gracias por las ideas, y porque tendré que irme familiarizando con ellas para manejar de la mejor manera este blog, ahora que lo tengo en un servidor virtual.