Configurar ssh ubuntu server


Con OpenSSH es posible iniciar en nuestro servidor sin necesidad de contraseña, para ello vamos a configurar SSH Ubuntu server 20.04 desde cero y paso a paso.

oscar Escrito por oscar 18 November 2015 10510 0

Acerca del proyecto

Cuando nos conectamos a un servidor de forma tradicional, ya sea desde el mismo equipo o por conexión remota, nos pedirá que ingresemos nuestro usuario y contraseña, pero si queremos realizar este inicio de sesión de forma automática con solo hacer un click, debemos implementar el inicio de sesión por medio del SSH, el cual utiliza llaves públicas y privadas, que nos permite iniciar sin tener que escribir los datos de autenticación, para ello vamos a configurar ssh ubuntu server.

Conocimiento previo

Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.

Proyecto Descripción
Directorios de linux Para comprender la estructura de Linux hay que conocer previamente el estándar FHS, norma que define los directorios y contenidos de GNU/Linux
Usuario root en linux En este post conoceremos como trabajar con el usuario root de los sistemas operativos linux y sus variantes, aprenderemos a activarlos, ver los permisos entre otros.
Instalar ubuntu server Encontrará un listado con las diferentes versiones de ubuntu server que se han instalado.

Entrono y programas a instalar

Para este post usamos los siguientes programas:

  • Ubuntu server 20.04
  • OpenSSL 1.1.1f

¿Qué es SSH?

Según la definición de open-ssh es una herramienta de interprete de ordenes seguros para cifrar el trafico de autenticación a los diferentes equipos que la implementen.

Para mas información de ssh puedes visitar la siguiente definición de wikipedia.

Instalar ssh en ubuntu server

La instalación de ssh se realiza desde la terminal de comandos y solo necesita de un par de instrucciones, pero antes de hacer la instalación debemos tener los paquetes de ubuntu server actualizados usando los siguientes comandos.

sudo apt-get update
sudo apt-get upgrade

Una vez que termine la actualización de paquetes, procedemos a instalar openssh, en algunas ocasiones este paquete ya esta instalado por defecto en las nuevas versiones de ubuntu server, lo que vamos a hacer es ejecutar el comando para realizar la instalación o que actualice la versión de ssh por si lo necesita, para ello usamos el siguiente comando en la terminal.

sudo apt install openssh-server

Para verificar que la instalación se completo, ingresamos el siguiente comando:

#Ingresamos al administrados de openssh con
openssh

#Allí colocamos el comando version
OpenSSL> version

#Donde nos retornara 
OpenSSL 1.1.1f 1 #o la versión que tengamos

Archivo de configuración

Con este comando podemos acceder al archivo de configuración de open-ssh.

sudo gedit /etc/ssh/sshd_config

Arrancar el servidor

Podemos usar el siguiente comando para iniciar el servidor de ssh.

sudo /etc/init.d/ssh start

Parar el servidor

Podemos usar el siguiente comando para detener el servidor ssh.

sudo /etc/init.d/ssh stop

Reiniciar el servidor

Podemos usar el siguiente comando para reiniciar el servidor ssh.

sudo /etc/init.d/ssh restart

Acceder con un cliente ssh

Una ves tengamos instalado ssh-server, nos conectaremos desde otra maquina que tenga instalado ssh-client o un cliente ssh como putty, para este primera conexión lo realizaremos desde Windows, en la terminal de comandos la cual ya tiene un cliente ssh.

Para conectarnos necesitamos conocer la IP del servidor local o remoto y el usuario-contraseña del servidor, nos conectamos de la siguiente forma:

ssh oscar@192.168.20.53
oscar@192.168.20.53's password:
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-96-generic x86_64)
..
..
oscar@cluster:~$

De esta forma ya podemos acceder de forma remota al servidor.

Configurar ssh

Ya vimos en la sección anterior el archivo de configuración de ssh esta en /etc/ssh/sshd_config, ahora vamos a conocer algunas configuraciones básicas de este archivo.

Configuraciones seguridad

Los siguientes elementos de archivo son los mas importante cuando se desea configurar el ssh:

Port

Puerto de conexión, por defecto es el 22, este se puede cambiar siempre y cuando no coincida o no se este usando con otra aplicación.

PermitRootLogin

Por defecto cualquier usuario puede logearse, excepto root. Las configuraciones que podemos colocar son: "yes", pero no es recomendada ya que el usuario root se podrá conectar, "without-password" permite la conexión por medio de criptográficas RSA.

LoginGraceTime

Estableceremos el tiempo necesario para introducir la contraseña, evitando que el atacante tenga que «pensar mucho.

MaxAuthTries

Número de intentos permitidos al introducir la contraseña antes de desconectarnos.

MaxStartups

Número de logins simultáneos desde una IP, para evitar que se pueda utilizar la fuerza bruta con varias sesiones a la vez.

AllowUsers

Es crear una lista blanca de usuario. Este parámetro nos permite configurar los usuarios que podrán conectarse. Una medida muy restrictiva pero a la vez muy segura ya que bloqueará todas las conexiones de los usuarios que no estén en el listado. Los usuarios que tengamos aquí podrán conectarse, y el resto no.

DenyUsers

Parecido al anterior, pero ahora creamos una lista negra. Los usuarios que tengamos aquí no podrán conectarse, y el resto sí.

AllowGroups/DenyUsers

Exactamente igual a lo anterior, pero en lugar de crear una lista blanca/negra de usuarios, es de grupos de usuarios.

Configurar ssh llaves criptográficas

ssh keygen

Este forma de crear las keys públicas y privadas solo nos sirve si tenemos instalado el cliente ssh y con solo ejecutar el siguiente comando podemos generar las llaves.

Desde el sistema operativo linux podemos ejecutar los comandos sin ningún problema.

Desde Windows recomiendo que se descarguen una shell linux como la de git, ya que no les va a funcionar, o realizar los pasos con putty.

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\codigoelectronica/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\codigoelectronica/.ssh/id_rsa.
Your public key has been saved in C:\Users\codigoelectronica/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:3Rgk3IxfsAwz0tu4VKfs6ldV2Cdg7k8afspEDpY84cY codigoelectronica@DESKTOP-3VMNJ6G
The key's randomart image is:
+---[RSA 3072]----+
|      .o=+o.o. o |
|       .+B++o o +|
|         B=+.  o.|
|        +==B  .  |
|       .SoE =..  |
|        .o.*.=   |
|         . .= o  |
|        . .o o   |
|       ...  o    |
+----[SHA256]-----+

Luego de indicarle los datos que nos pide el comando, se nos ha generado las llaves en la ruta que nos da por defecto:

Ahora procedemos a copiar la llave al servidor, con solo ejecutar este comando realiza el proceso de copuado y cunfiguración en el servidor:

ssh-copy-id oscar@192.168.20.53
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/c/Users/codigoelectronica/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
oscar@192.168.20.53's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'oscar@192.168.20.53'"
and check to make sure that only the key(s) you wanted were added.

Putty

Para realizar la configuración de inicio de sesión de ssh con putty, debemos utilizar putty el cual va a hacer de cliente ssh y putty key generator el cual nos ayudara a crear las llaves privadas y publicas necesarias para el cifrado de inicio de sesión.

Generar llave privada y llave publica

Vamos a crear las llaves, para ello usaremos la herramienta putty key generator para windows, la cual nos ayuda con este paso de forma fácil; también hay que tener en cuenta que esto lo hacemos desde nuestro local y no directamente en el servidor final.

Iniciamos con putty key generator, cuando se abra la ventana, buscamos en la parte inferior el type of key to generator, y seleccionamos el tipo SSH2 RSA, el cual es el tipo de incriptación y las llaves que vamos a generar.

Putty key generator
Putty key generator

Cuando damos en el botón de generar empezara a crear las llaves, así que nos pedirá desplazar el puntero del mouse en la parte blanca para generar aleatoriamente la llave.

Generar keys
Generar keys

Una vez que termine, ya están las llaves listas para ser guardadas en nuestro equipo, para ello hacemos click en save public key y save private key, te recomiendo que las guardes en tus documentos del equipo y les realices una copia por seguridad.

Keys generadas
Keys generadas

Por último, copiamos las llave publica, esta es la que se encontrará en el servidor, para ello la dejamos lista para ser colocada.

Copiar public key
Copiar public key

Copiar llaves a servidor ubuntu

Una ves que tengamos las llaves listas volvemos a nuestro servidor a terminar de hacer la respectiva configuración, donde vamos a hacer los siguiente, creamos un archivo llamado authorized_keys, el cual es donde reposara nuestra llave publica, utilizada por open ssh para la autenticación.

#Creamos la carpeta .ssh en donde estarán nuestras llaves, esto se hace dentro del usuario al
#cual va a implementar la autenticación por ssh
sudo mkdir .ssh

#Cambio los permisos para que solo pueda acceder el propietario
sudo chmod 0700 .ssh

#Creo el archivo vacío el cual va a contener la llave publica
sudo touch .ssh/authorized_keys

#Cambio los permisos del archivo
sudo chmod 0644 .ssh/authorized_keys

#Dejamos como propietario a el usuario
sudo chown SU_USUARIO ~/.ssh -R

Una ves que tengamos el archivo listo con los permisos entramos a editarlo con:

sudo nano .ssh/authorized_keys

y allí pegamos la llave publica que previamente copiamos desde putty key generator, guardamos los cambios y salimos del archivo.

Reiniciamos el servidor ssh y procedemos a configurar putty para hacer la autenticación con la llave privada.

Configurar en putty la llave ssh

 

Ingresar al servidor con putty
Ingresar al servidor con putty

Al abrir putty buscamos en el panel de category el elemento conexión, allí esta la opción ssh y en ella auth, al darle click nos muestra la configuración ssh autenticación y en el cuadro private key file for authentication y buscamos la llave privada en la ubicación donde la guardaron.

Colocar key de autenticación
Colocar key de autenticación

Nos dirigimos al inicio en "session" y colocamos la ip del servidor al cual nos vamos a conectar, y le damos en open

Guardar configuración
Guardar configuración

Al abrir colocamos únicamente el usuario, y el servidor ssh realizara la autenticación, donde nos muestra en la segunda linea que realizo con éxito el inicio se sesión por llave publica.

Configurar ssh ubuntu server
Configurar ssh ubuntu server

Con estos simples pasos ya tenemos la configuración de inicio de sesión por ssh, así podrás hacer la implementación en tus servidores.


Comentario

Debe aceptar antes de enviar