TUTORIAL SSH. Cómo Utilizar SSH para conectarse a servidores remotos

[TUTORIAL] SSH. Cómo Utilizar SSH para conectarse a servidores remotos

SSH, o Secure Shell, es una herramienta esencial para administradores de sistemas y desarrolladores que necesitan acceder de forma remota a servidores y dispositivos. Este protocolo de comunicación proporciona una conexión segura y encriptada que protege la integridad de los datos y las comunicaciones.

En este completo tutorial exploraremos en detalle qué es SSH, cómo funciona y cómo puedes utilizarlo de manera efectiva para mantener tus conexiones seguras y tu información protegida.

Si tienes contratado un VPS o un servidor dedicado, SSH es la mejor forma de conectarse a tu servidor. Los hostings compartidos, al ser compartidos por más usuarios, no es posible utilizar SSH para conectarse a ellos para gestionarlos.

Qué es SSH

SSH viene de Secure Shell. Es un protocolo de red que permite a los usuarios conectarse de forma segura a dispositivos remotos a través de una conexión cifrada. Se utiliza comúnmente para administrar servidores, transferir archivos y ejecutar comandos en sistemas remotos.

Gracias a SSH podemos conectarnos a un servidor y realizar toda la administración del mismo, desde restablecer servicios, reiniciar el servidor, hasta montar discos externos.

La principal ventaja de SSH es su cifrado, ya que si realizamos la conexión de forma correcta utilizando las ssh-keys en lugar de utilizar una contraseña, el protocolo es realmente seguro, y limita las formas en las que un ataque externo puede entrometerse en nuestro servidor.

Beneficios de SSH

  • Seguridad: SSH utiliza técnicas de cifrado para proteger las comunicaciones, lo que significa que tus datos y contraseñas están seguros durante la transmisión.
  • Acceso Remoto: Permite el acceso a sistemas remotos de forma segura, lo que es esencial para administrar servidores y dispositivos a distancia.
  • Transferencia de Archivos: SSH incluye herramientas como SCP y SFTP que facilitan la transferencia segura de archivos entre sistemas.

Instalación de SSH

Por norma general, el servicio de SSH ya viene instalado en la mayoría de distribuciones de Linux, de forma que, al realizar la instalación del sistema operativo, el servicio ya está operativo.

Cuando compramos un servidor dedicado o un VPS, se nos facilitarán las claves para acceder a través de SSH a nuestro servidor.

Si estás montando un servidor en casa, físico, y necesitas realizas la instalación de SSH, se puede realizar de una forma muy sencilla. Solo tienes que abrir un terminal dentro del servidor e introducir el comando de instalación, el cual dependerá de la distribución Linux que tengas.

Ubuntu/Debian

CentOS/Almalinux/Red Hat

Introducimos el comando, pulsamos enter, y comenzará el proceso de instalación. Es probable que el sistema operativo nos pregunte una confirmación para la instalación del paquete, tendremos que introducir una "y" y pulsar enter.

Una vez finalizado el proceso de instalación, ya tendremos el servidor SSH instalado para poder acceder al servidor desde el exterior.

Activar / Restaurar / Desactivar SSH

Comprobar el estado del servicio SSH

Antes de proceder con la conexión al servidor desde un cliente, debemos comprobar en el servidor si el proceso de ssh está funcionando correctamente. Para ello utilizaremos el siguiente comando:

Ubuntu/Debian

CentOS/Almalinux/Red Hat

Si el servidor nos devuelve el estado "Active" en verde, significa que el servidor SSH está funcionando, en caso contrario, tendremos que activar el servicio para poder utilizar SSH.

Activar el servicio de SSH

Si comprobamos el servicio SSH del servidor y nos aparece como inactivo, debemos activar el servicio para poder utilizar el servidor SSH. Esto se puede realizar de forma muy sencilla utilizando el siguiente comando dependiendo del sistema operativo:

Ubuntu/Debian

CentOS/Almalinux/Red Hat

Una vez ejecutado este comando, debemos volver a comprobar el estado del servicio. Si el estado del servicio nos muestra "active" en verde, significa que ahora sí podremos establecer conexiones con el servidor.

Restaurar el servicio de SSH

Es posible que hayamos hecho cambios en el archivo de configuración de SSH y estas no se vean reflejadas en el protocolo. Esto ocurre porque cuando realizamos un cambio en este archivo de configuración, tenemos que restaurar el servicio para que estos se vean aplicados. Para restaurar el servicio de SSH, podemos utilizar el siguiente comando:

Ubuntu/Debian

CentOS/Almalinux/Red Hat

De nuevo, una vez ejecutado este comando, rebemos revisar el status del servicio para asegurarnos de que está up y el protocolo seguirá funcionando.

Desactivar o parar el servicio de SSH

Si tenemos instalado en nuestro servidor SSH y queremos desactivarlo para evitar conexiones mediante SSH al mismo, el protocolo también nos da esta opción. Podemos parar el servicio de SSH con los siguientes comandos:

Ubuntu/Debian

CentOS/Almalinux/Red Hat

Una vez ejecutado el comando, si comprobamos el servicio de SSH, ya no nos aparecerá "active" sino que nos mostrará "stopped" en color rojo. Cuando el servicio SSH está desactivado, no se permite ninguna conexión entrante al servidor.

Conexión al servidor remoto

Una vez nuestro servidor tiene instalado el protocolo SSH, ya podemos acceder a nuestro servidor desde un cliente externo, como por ejemplo nuestro ordenador.

Como hemos comentado antes, cuando se compra un VPS o un dedicado, el proveedor nos facilitará un acceso root (administrador) a nuestro servidor a través del correo electrónico. En el caso de haber instalado nosotros el sistema operativo, el acceso root lo habremos creado en el instalador del mismo.

Para poder acceder al servidor, necesitaremos en el cliente un terminal que cuente con el protocolo SSH, y esto dependerá del sistema operativo que tenga nuestro ordenador:

  • En el caso de Mac o Linux, los terminales del sistema operativo ya cuentan con el protocolo instalado, por lo que no tienes que hacer ningún paso adicional.
  • Si utilizas Windows, el terminal por defecto de Windows no tiene instalado SSH, por lo que en este caso tendrás que utilizar o bien su nuevo terminal PowerShell, que sí que trae el protocolo SSH, o recurrir a aplicaciones externas como por ejemplo PuTTy, que no es más que un cliente SSH.

Una vez tenemos el terminal o el cliente SSH, podemos acceder a nuestro servidor de una forma sencilla. Solo tenemos que abrir el terminal, e introducir el siguiente comando:

Donde usuario es el usuario root que se nos ha facilitado o hemos creado, y direccion_del_servidor es la IP del servidor. Un ejemplo de este código sería:

Introducimos el comando, pulsamos enter, y el protocolo SSH nos pedirá la contraseña del usuario que hemos introducido. Escribimos la contraseña, pulsamos enter, y ya estaremos dentro de nuestro servidor.

Ten en cuenta que, cuando escribimos alguna contraseña en un terminal de un sistema operativo Linux, conforme vayamos escribiendo los caracteres no aparecerán en el terminal. Esto es completamente normal, es una medida de seguridad que aplica Linux en las contraseñas. Aunque no veas los carácteres, escribe la contraseña completa y pulsa enter. Si la contraseña es correcta, se habrá establecido la conexión con el servidor.

Desconexión del servidor remoto

Una vez hemos realizado todas las tareas que queríamos en el servidor y queremos desconectarnos del mismo, podemos hacerlo de dos formas:

  • Escribiendo la palabra exit en el terminal y pulsando enter. Esto cerrará la sesión SSH y nos desconectará del servidor remoto.
  • Pulsando Ctrl + D. Es un atajo de teclado para ejecutar el comando exit, por lo que el resultado será el mismo, cerrará la sesión SSH y nos desconectará del servidor remoto.

Autenticación con claves o certificados SSH

Llegados a este punto ya sabemos como instalar un servidor SSH, conectarnos y desconectarnos a él. Como te habrás dado cuenta, cada vez que queremos acceder a un servidor SSH debemos indicar la contraseña del usuario con el que estamos accediendo.

Para esto SSH tiene una gran alternativa, ya que nos permite iniciar sesión en los servidores sin utilizar una contraseña, utilizando una clave o ssh-key. Esta clave la generaremos en el ordenador desde el cual queremos conectarnos (el cliente), y añadiremos la clave de nuestra máquina al servicio SSH del servidor.

De esta forma, cuando queramos incidir sesión en un servidor, el servidor comparará la clave SSH privada de nuestro cliente, con el listado de claves públicas autorizadas que tiene el servidor. Si la clave coincide, nos iniciará sesión sin necesidad de introducir la contraseña.

Esta característica de los servicios SSH es muy importante a nivel de seguridad informática, ya que si permitimos el acceso SSH a través de contraseña, lo más probable es que tengamos problemas de ataques DDoS, puesto que los atacantes podrían probar contraseñas hasta encontrar la correcta.

Al acceder al servidor por clave, podemos deshabilitar el acceso por contraseña, y así darle un plus de seguridad a nuestro servidor. Vamos a ver como configurar todo esto.

Crear una clave o certificado SSH en nuestro ordenador (cliente)

En primer lugar, lo que necesitamos es crear una clave SSH en el ordenador desde el cual vamos a realizar la conexión al servidor, es decir, el cliente. Crear la clave es muy sencillo, solo tenemos que abrir el terminal o el cliente SSH e introducir el siguiente comando:

Una vez introducido el comando, se generarán dos claves en nuestro ordenador local, una pública y una privada. La clave pública es la que debemos compartir con el servidor para poder realizar la conexión, mientras que la clave privada es la que debemos mantener en nuestro ordenador.

Para poder copiar la clave pública, tenemos que leer el archivo que contiene la clave o el certificado. Para ello, desde el terminal ejecutamos el siguiente comando:

El comando cat lo que hace es mostrarnos que información contiene un archivo. En este caso, los certificados SSH se almacenan en una carpeta oculta (todas las carpetas con un punto delante, son carpetas ocultas en Linux) llamada ssh. El nombre del certificado id_rsa es el nombre que le creará por defecto el sistema operativo.

Una vez ejecutado el comando, nos mostrará el certificado o clave SSH. Lo copiamos y lo guardamos.

Llegados aquí, hemos creado nuestra clave para la conexión con SSH. Solo nos falta añadir esta clave al servidor de destino para que nos permita realizar la conexión.

Añadir una clave o certificado SSH a un servidor

Para añadir la clave a nuestro servidor, en primer lugar tendremos que conectarnos mediante SSH con un usuario administrador. Siguiendo los pasos de esta guía ya sabes como hacerlo.

Una vez estamos dentro, debemos editar el archivo authorized_keys. Este archivo del servidor es el archivo que contiene todas las claves SSH autorizadas para iniciar sesión en el servidor sin necesidad de introducir la contraseña.

Para editar este archivo, lo podemos hacer desde el terminal, utilizando el siguiente comando:

vi es un editor de código a nivel de terminal, que nos permite editar archivos del servidor en el propio terminal. Una vez ejecutado este comando, se nos habrá abierto el archivo authorized_keys. Si es la primera vez que accedes, este archivo estará vacío, ya que no habrá ninguna clave autorizada.

Lo que tienes que hacer ahora es recuperar la clave SSH que hemos copiado antes desde el cliente, y pegarla en este archivo. Una vez pegada, guardaremos y cerramos el archivo.

Para ello, escribimos el símbolo ":", y posteriormente escribimos wq, quedando así:

Lo que hace este comando cuando estamos dentro de vi es lo siguiente:

  • : accede a las opciones de vi para guardar, salir, o cerrar un archivo
  • w viene de write, por lo que le estamos dando la orden de que guarde el archivo sobreescribiendo el contenido.
  • q viene de quit, por lo que, después de guardar el archivo, le estamos diciendo que lo cierre.

Una vez guardado este archivo, ya podemos acceder a nuestro servidor desde ese cliente sin introducir la contraseña, te recomiendo que lo pruebes. Cierra sesión en SSH y prueba a iniciar sesión de nuevo. Ambos comandos los tienes en esta guía. Como podrás ver, si has seguido los pasos correctamente, ahora iniciará sesión en el servidor sin necesidad de la contraseña.

Consejos adicionales

Si has llegado hasta aquí, ya sabes como utilizar el protocolo SSH de forma correcta, como crear claves y como acceder desde un cliente a un servidor SSH.

Me gustaría darte una serie de consejos adicionales que pueden servirte para realizar configuraciones más avanzadas de SSH, así como mejorar la seguridad del servidor.

Archivo de configuración de SSH

Dentro del servidor SSH, existe un archivo de configuración muy útil que nos permite cambiar varias opciones del protocolo SSH, y que aplicando ciertos cambios fáciles podemos mejorar de forma sustancial la seguridad de nuestro servidor.

Ten en cuenta que al instalar el protocolo SSH en tu servidor, cualquier persona desde el exterior podría intentar acceder al mismo, y eso puede ser un fallo importante en la seguridad de tu sistema.

El archivo de configuración del protocolo ssh se llama sshd_config y se encuentra en la carpeta /etc/ssh/sshd_config. Podemos editarlo con cualquier editor de terminal, por ejemplo, para abrir este archivo con vi, podríamos utilizar el siguiente comando:

Cambiar el puerto de acceso SSH

Por defecto, el puerto de acceso SSH es el puerto 22. Si te das cuenta, a lo largo de toda esta guía en ningún momento hemos nombrado el puerto necesario para la conexión, ya que todos los clientes SSH por defecto se conectarán al puerto 22.

Podemos mejorar la seguridad de nuestro servidor cambiando este puerto, ya que, si ponemos un puerto que no esté en uso, y que los atacantes no sepan, nunca podrán acceder a nuestro servidor a través de SSH.

Para cambiar el puerto de acceso, tenemos que hacer lo siguiente:

1. Abrimos un terminal

2. Accedemos al archivo de configuración

3. Buscamos en el archivo lo siguiente: Port 22

4. Cambiamos el número 22 por otro número de puerto. Podemos utilizar cualquier número entre el 1024 y el 65536, ya que todos ellos están libres.

5. Guardamos el archivo de configuración

6. Reiniciamos el servicio de SSH.

Una vez terminado este último paso, ya habremos cambiado el puerto de acceso SSH.

Algo muy importante es que, una vez cambiado el puerto, debemos modificar nuestra forma de conectarnos al servidor, ya que por defecto todos los clientes intentan conectar al puerto 22. Para seleccionar un puerto diferente en la conexión, tendremos que utilizar el siguiente comando:

Donde en numero_del_puerto tendremos que poner el nuevo puerto que hemos configurado.

No permitir el acceso con contraseña

Si queremos poner seguridad adicional a nuestro acceso mediante SSH, otra de las acciones que podemos hacer es no permitir el acceso con contraseña. De esta forma, solo se podrá acceder por SSH mediante las claves o certificados autorizados en el servidor. Esto nos permite añadir una protección ante los posibles ataques DDoS que pueda sufrir nuestro servidor.

Para hacer esta modificación, tenemos que seguir los siguientes pasos:

1. Abrimos un terminal

2. Accedemos al archivo de configuración

3. Buscamos en el archivo lo siguiente: PasswordAuthentication

4. Veremos que a continuación pondra "yes", debemos cambiar ese "yes" por "no", quednado así:

5. Guardamos el archivo de configuración

6. Reiniciamos el servicio de SSH.

¡Y listo! Ahora nuestro servidor ya está completamente seguro ante ataques externos, y solo los clientes con clave autorizada podrán acceder mediante SSH.

Conclusión

SSH es una herramienta esencial para la administración de servidores, y configurarla correctamente es súper importante para la seguridad del sistema.

En este tutorial hemos aprendido qué es SSH, cómo funciona y cómo utilizarlo de manera efectiva. Además, tienes unos pequeños consejos que te servirán para poder explotar al máximo este protocolo.

Cualquier duda o aporte al respecto, puedes dejarla en los comentarios y te responderé cuanto antes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

PWI Cloud tratará sus datos personales para gestionar los comentarios y opiniones. Para lo que contamos con su consentimiento. Puede ejercer sus derechos de acceso, rectificación, supresión, así como otros derechos. Puede obtener más información en nuestra Política de Privacidad.