OpenSSH en Ubuntu server
OpenSSH es una herramienta popular para la seguridad y la comunicación en red, en este post, hablaremos sobre OpenSSH en Ubuntu server
Por defecto, SSH cliente esta instalado en las nuevas distribuciones de Ubuntu, y lo podemos comprobar colocando en la termina ssh donde aparcera la ayuda de este comando, pero OpenSSH server no esta instalado, en este post realizaremos la instalación y la configuración de SSH.
Para hacer este contenido, nos vamos a guiar de la documentación oficial OpenSSH Server | Ubuntu.
Precondiciones
- Configurar OpenSSH server para producción
- Configurar ssh ubuntu server
- SSH key: guía completa de las llaves públicas y privadas de SSH
Entrono y programas a instalar
- Ubuntu Server 22.04
Instalar ssh en ubuntu server
La instalación de las aplicaciones cliente y servidor OpenSSH es simple, siga los siguientes pasos para tener este servicio en su sistema:
1. Actualizar los paquetes de instalación de Ubuntu server:
sudo apt-get update
sudo apt-get upgrade
2. Para instalar las aplicaciones cliente OpenSSH en su sistema Ubuntu, use este comando en un indicador de terminal:
sudo apt install openssh-client
3. Para instalar la aplicación de servidor OpenSSH y los archivos de soporte relacionados, use este comando en un indicador de terminal:
sudo apt install openssh-server
Servicios
Estado del servidor
Podemos usar el siguiente comando para ver el estdo del servior ssh.
sudo /etc/init.d/ssh status
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
Conexion de prueba
Una ves este instalado OpenSSH server, realizaremos la conexión de prueba desde otra maquina donde este instalado OpenSSH client, para este primera conexión lo realizaremos desde Windows, y accederemos con el usuario, contraseña y la IP de inicio de sesión de ubuntu.
Nota: es recomendable quitar la autenticación de SSH de usuario y contraseña y colocar por medio de llaves publicas y privadas, que se explican mas adelante.
El comando a usar para dicha conexion es la siguiente:
ssh domain\username@servername
Donde:
- Domain: dominio donde esta el servidor en la red local
- Username: nombre de usuario de la maquina, normalmente con el que iniciamos sesión
- Servename: nombre del servidor o la dirección IP
Veamos el ejemplo con datos reales:
ssh oscar@192.168.10.15
El resultado es el siguiente:
The authenticity of host '192.168.10.15 (192.168.10.15)' can't be established.
ED25519 key fingerprint is SHA256:j7iJTM3sMDijd/uXdFnUv0qhsK+DDiFYHMd7g4EWhvM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.15' (ED25519) to the list of known hosts.
oscar@192.168.10.15's password:
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-76-generic x86_64)
Archivo de configuración
El archivo de configuración principal de OpenSSH en Ubuntu se llama "sshd_config". Este archivo se encuentra en el directorio "/etc/ssh/", y contiene diversas opciones de configuración que permiten ajustar el comportamiento del servidor OpenSSH en el sistema.
Con este comando podemos acceder al archivo de configuración de open-ssh.
sudo nano /etc/ssh/sshd_config
Procedemos a realizar la siguiente configuración Configurar OpenSSH server para producción | CodigoElectronica
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
Guardamos y procedemos a reiniciar el servicio de SSH.
Crear las llaves publicas y privadas
ssh-keygen
Procedemos a crear las llaves con el comando
ssh-keygen
Donde nos dará la siguiente respuesta
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oscar/.ssh/id_rsa):
Created directory '/home/oscar/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oscar/.ssh/id_rsa
Your public key has been saved in /home/oscar/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:031mkl3/7wP+lq8WU77pDwJBUuDy8SYaWatCNzWIbow oscar@ubuntu-focal
The key's randomart image is:
+---[RSA 3072]----+
| ooo |
| . o o |
| . o * . .|
| + * * o o .o|
| E = = S = + =o.|
| o . = + . *o o|
| . o o oo=|
| . o.B.|
| .==O|
+----[SHA256]-----+
Si listamos los archivos en el directorio .ssh, observamos las llaves:
oscar@ubuntu-focal:~$ ls .ssh
id_rsa id_rsa.pub
authorized_keys
En el servidor sshd, debemos crear el archivo `authorized_keys` con el valor de la clave publica `id_rsa.pub` y darle permisos adecuados para que solo el usuario de la sesion pueda acceder a este archivo:
Creamos el archivo authorized_keys, esto lo puede hacer por comandos o con blog de notas.
mkdir authorized_keys
Importante: el authorized_keys no debe tener ninguna extensión.
Copiamos el contenido de id_rsa.pub a authorized_keys
Nota: Tambien podemos usar el siguiente comando
cp /home/<USUARIO>/.ssh/id_rsa.pub /home/<USUARIO>/.ssh/authorized_keys
Donde el <USUARIO> es con el que inicia sesión y se desea crear la llave.
Al listar el directorio quedara de la siguiente forma:
oscar@ubuntu-focal:~$ ls .ssh
authorized_keys id_rsa id_rsa.pub known_hosts
Prueba con llave publica y privada
Volvemos a realizar las pruebas de conexión, usemos el mismo comando:
ssh oscar@192.168.10.15 -i /home/<USUARIO>/.ssh/id_rsa
Donde iniciará sesión con las keys y sin solicitar contraseña.