Administración remota utilizando SSH
SSH es un protocolo que permite conexiones seguras a través de redes no seguras. Para poder utilizarlo tenemos que contar con una aplicación servidor en el destino al que nos queramos conectar y una aplicación cliente en el sistema que queramos utilizar para conectarnos.
GNU/Linux CLI. Configuración de red
Lo primero que debemos comprobar es que físicamente nuestra máquina está conectada a la red de la organización. En terminología de virtualización tenemos que conectar la interfaz de red virtual de la máquina virtual a la Red NAT que estamos utilizando en toda la serie de casos prácticos.
Ahora iniciamos el sistema y lo configuramos.
¿Como podemos ver la configuración de red?
No está configurada la interfaz de red, vamos a configurarla con una direccion IP estática: host número 253 dentro de la red de nuestra organización.
Si no nos acordamos de cómo se configura el fichero /etc/network/interfaces podemos consultar su página de manual.
Aquí tenemos información de configuración
Vamos a configurar la interfaz enp0s3 para ello editamos /etc/network/interfaces
No tiene dirección IP esta interfaz de red porque en nuestra organización no tenemos, por ahora, un servidor DHCP. Vamos a configurarla con una dirección IP estática utilizando el protocolo IPv4.
Lo único que hemos hecho hasta ahora es editar un fichero de texto plano, para que los cambios en la configuración se apliquen tenemos que reiniciar la interfaz de red.
Ahora nos queda configurar el servidor o servidores DNS que vamos a utilizar. Aunque en esta serie de casos prácticos estamos trabajando en una organización en la que tenemos un servidor DNS propio en el dc01.jpedrerom.ex en esta ocasión vamos a configurar como servidor DNS 192.168.24.1
El fichero en el que está la configuración del servidor DNS en un sistema GNU/Linux de tipo Debian es /etc/resolv.conf.
Ahora nos quedaría comprobar que tenemos conexión con la red LAN, con Internet y que resolvemos nombres de dominio (DNS). La forma más sencilla sería mandar un ping a un equipo de internet a través de su FQDN. Si funciona está todo bien.
GNU/Linux CLI. Instalar y configurar el servidor SSH
Una vez configurada la red nos toca instalar el servicio SSH en este sistema. Para permitir conexiones remotas a través del protocolo SSH en este equipo tenemos que tener instalada una aplicación servidora que gestione peticiones SSH. En nuestro caso vamos a instalar open-ssh
Controlando el servicio
Para controlar los servicios utilizamos la herramienta systemctl. Si no tenemos claro que es vamos a consultar la página de manual.
Con esta herramienta vamos a gestionar los servicios que instalemos en nuestro sistema.
Vamos a comprobar el estado del servicio ssh.
Vamos a comprobar si hay algún proceso en ejecución con el nombre ssh o similar. Si nos fijamos en la salida del comando anterior ya nos están indicando cuál es el PID del proceso que ejecuta el servicio SSH.
Vamos a parar el servicio. Para ello utilizamos el comando o la opción stop de systemctl.
Por supuesto, esta operación es una operación de administración, así que tendremos que lanzarla como root con sudo.
Vamos a ver si sigue el proceso en ejecución…
Ahora lo lanzamos de nuevo con el comando u opción start de systemctl.
Primera conexión: cliente ssh.
Desde la máquina GNU/Linux Debian 12 con entorno de escritorio XFCE nos vamos a conectar a este sistema Debian 12 CLI utilizando el cliente ssh: ssh. Lo único que tenemos que hacer es indicar el nombre del usuario y la dirección IP de la máquina remota.
Lo primero que podemos hacer es comprobar que tenemos conexión con la máquina remota utilizando ping.
Después intentaría conectarme con el comando ssh.
Para cerrar la conexión solo tenemos que ejecutar el comando exit.
En el prompt del sistema podemos observar cómo el nombre de la máquina a la que nos conectamos cambia.
Configurando el servidor SSH
Como (casi)todos los servicios en sistemas GNU/Linux la configuración de este servicio se lleva a cabo a través de ficheros de texto plano que están almacenados dentro del directorio /etc.
Vamos a echar un vistazo al directorio /etc/ssh para ver qué ficheros de configuración tenemos disponibles y trataremos de averiguar cuál de ellos es el adecuado.
Vamos a consultar la página de manual de este fichero de configuracion para descubrir algunos de sus principales parámetros de configuración.
Hemos utilizado el tabulador para mostrar todas las opciones disponibles, lo cual nos da una idea de todas las herramientas que tenemos a nuestro alcance.
Vamos a echar un vistacito a unos parámetros de configuración interesantes…
Algunos ejemplos
Ejemplo 1. Configurando el servidor ssh para que acepte conexiones por otro puerto
Configura el servidor para que acepte conexiones desde el puerto 2200. Ahora conéctate desde el cliente con este puerto.
Vamos a abrir el fichero de configuración para editarlo.
En esa línea nos están indicando, con un comentario, que el puerto 22 es el que se utilizará. Vamos a descomentar la línea y actualizar el dato del puerto.
Ahora deberíamos reiniciar el servicio para asegurarnos de que los cambios se han aplicado.
Vamos a conectarnos desde el Debian 12 XFCE
Falla porque por defecto el cliente ssh utiliza el puerto 22. Vamos a ver cómo podemos decirle que utilice el puerto 2200 cuando se conecte.
Ahora especificamos el puerto
En esta segunda ocasión no hemos puesto el nombre del usuario en la dirección de destino porque es el mismo nombre de usuario en local que en remoto.
Ejemplo 2. Configurando el cliente ssh para que cuando se conecte al servidor utilice el puerto 2200
Configura el cliente ssh del Debian 12 XFCE para que se conecte automáticamente por el puerto 2200 cuando se conecte al equipo 192.168.24.253
Si cada vez que queramos conectarnos al servidor tenemos que poner la opción -p se nos hace pesado… Vamos a configurar el cliente para que automáticamente utilice el puerto 2200 cuando nos conectemos al host 192.168.24.254.
Para ello editamos el fichero de configuración de la aplicación cliente que es /etc/ssh/ssh_config
Si nos fijamos hay una sección llamada Host que nos permitirá configurar una configuración concreta para un host o grupos de hosts específicos. Vamos a aprovecharla para conectarnos con el sistema 192.168.24.253.
Esta es la configuración necesaria. Ahora vamos a mostrar desde la terminal solo las líneas de configuración, evitando mostrar los comentarios.
Los comentarios en este tipo de ficheros de configuración complejos son muy buenos para aprender, pero nos dificultan comprender o razonar sobre la configuración efectiva que hay realmente en el fichero.
Vamos a probar si todo esto funciona.
Odio tanta autenticación… Autentificación a través de claves RSA
No queremos tenemos que utilizar contreaña cada vez que iniciemos sesión remota en srv01 o 192.168.24.253. Sin embargo, tenemos que garantizar la seguridad en el acceso al host remoto, ¿cómo lo hacemos?.
Para esto podemos utilizar un par de contraseñas asimétricas con RSA. Lo primero que vamos a hacer es generarnos un par de claves RSA para permitir el uso de criptografía asimétrica.
Vamos a generar
Ahora deberíamos pasarle la clave al host remoto en la cuenta del usuario alumno. Para ello deberíamos copiarla de forma segura y remota en el directorio .ssh. Para esto hay una herramienta que es ssh-copy-id
Vamos a probar a conectarnos de nuevo a través de ssh
No pide contraseña 🙂
Dejar una respuesta