educación, informática y demás

2308 - Secure Shell

Instalando servidor SSH en un sistema GNU/Linux Debian 12

En este caso práctico vamos a instalar un servidor SSH en un sistema GNU/Linux Debian 12 sin interfaz gráfica de usuario. Este sistema lo utilizaremos como servidor en nuestra organización, por lo que estará configurado con una dirección IP fija, la última del rango de la LAN en la que estamos trabajando.

En nuestro caso, que estamos trabajando con el hiperfisor VirtualBox, tenemos creada una Red NAT llamada ASONetwork con la siguiente configuración: 192.168.23.0/24 sin DHCP.

Partimos de la base de que nuestro servidor está correctamente instalado. Podemos seguir los pasos de configuración de red del servidor que aparecen en la entrada Configuración básica de red en GNU/Linux Debian 12 para los casos prácticos.

Comprobamos que está bien configurada.

Vamos a comprobar que tenemos conexión a Internet con un ping a www.educatica.es

De esta forma comprobamos tanto la resolución de nombres del DNS como la conexión a Internet y, por tanto, la conexión a la puerta de enlace y red local.

Instalando el software

Actualizamos la lista de paquetes

Vamos a instalar el paquete openssh-server.

Comprobando que el servidor está en funcionamiento

Hemos instalado un servicio, en concreto un servidor SSH, pero.. ¿dónde está?. Se esta ejecutando como un demonio o servicio, que no va a interactuar con el usuario, por tanto no somos conscientes de su ejecución.

Para controlar este tipo de aplicaciones, servicios o demonios, utilizamos los scripts de gestión de servicios o bien el comando systemctl.

Vamos a probar con el comando service pasándole el comando status.

Vamos a probar a mostrar el estado del servicio con systemctl. En este caso los parámetros cambian de orden, primero tenemos que indicar qué queremos hacer y después con qué servicio.

Gestionando el servicio

Básicamente, con todos los servicios que instalemos, como por ejemplo samba, vsftpd, isc-dhcp-server, etc., podemos usar los siguientes comandos tanto con service como con systemctl:

  • status
  • start
  • stop
  • restart
  • reload

La mayoría de los servicios, por no decir todos, se configuran a través de ficheros de texto plano que estarán almacenados dentro del directorio /etc. Por tanto, para configurar un servicio tan solo tendremos que editar su fichero de configuración, adaptarlo a nuestras necesidades y reiniciar el servicio para que cargue y aplique los cambios.

Vamos a probar a apagar el servicio.

Vamos a activarlo de nuevo

Conexión remota desde sistema local

La mejor forma de comprobar que todo funciona como debería es probar la conexión a este servidor. Vamos a probarlo de forma local, es decir desde una terminal virtual diferente iniciamos sesión con el usuario alumno y tratamos de conectarnos a nuestra propia máquina utilizando el cliente ssh, que está instalado por defecto en esta distribución de GNU/Linux.

Ahora vamos a echar un vistazo a la sintaxis del comando ssh. Ejecutamos el comando ssh y vemos que nos muestra.

Vamos a probar a conectarnos a localhost.

Vamos a la terminal virtual número 1, que estamos con el usuario root, y vamos a ver qué procesos del sistema están ejecutando ssh o algo parecido, es decir cuyo nombre comience por ssh.

Ahí tenemos al cliente y tenemos instancias del servidor, es decir procesos que están ejecutando el demonio de ssh, escuchando o sirviendo peticiones.

¿Qué pasará si apago el servicio ssh?

El cliente ssh sigue conectado…

Vamos a echar un vistazo a los procesos que comiencen por ssh.

Lo que hemos hecho es apagar el servicio ssh que está esperando nuevas conexiones. Cada vez que se conecta un cliente se lanza un proceso sshd que gestiona esa conexión concreta. Por tanto, nuestro cliente ssh está conectado todavía al sistema, aunque ya no se permitirán nuevas conexiones.

Pero… ¿cómo acabamos con las conexiones actuales?. Matando el proceso sshd que de soporte a la conexión.

Al matar el proceso, se desconecta al cliente

Si tenemos muchos procesos sshd en ejecución, tenemos que usar killall: killall sshd.

Dejar una respuesta