🔐 Actividad Práctica: Instalación y Configuración de SSH Server y SSH Client en Debian GNU/Linux 13 (Trixie)

🎯 Objetivo de la práctica

Al finalizar esta actividad, el estudiante será capaz de:

✅ Comprender qué es SSH y para qué se utiliza.

✅ Instalar el servidor SSH en Debian GNU/Linux 13.

✅ Instalar el cliente SSH.

✅ Verificar el funcionamiento del servicio.

✅ Realizar conexiones remotas entre equipos.

✅ Administrar servidores Linux de forma segura mediante la red.

✅ Aplicar buenas prácticas básicas de administración remota.


🧠 ¿Qué es SSH?

SSH (Secure Shell) es un protocolo que permite acceder y administrar equipos remotos de forma segura a través de una red.

SSH cifra toda la información transmitida entre el cliente y el servidor, evitando que usuarios malintencionados puedan interceptar credenciales o información sensible.

Algunas aplicaciones de SSH son:

🌐 Administración remota de servidores.

📁 Transferencia segura de archivos.

⚙️ Configuración de servicios.

🐧 Administración de sistemas Linux.

☁️ Gestión de servidores en la nube.


🏗️ Escenario de la práctica

Supongamos que tenemos:

EquipoDirección IP
Servidor Debian192.168.1.100
Cliente Debian192.168.1.101

El objetivo será conectarnos desde el cliente al servidor utilizando SSH.


📋 Requisitos

Antes de comenzar verifica lo siguiente:

✅ Debian GNU/Linux 13 (Trixie) instalado.

✅ Conexión de red activa.

✅ Usuario con privilegios sudo.

✅ Repositorios correctamente configurados.

✅ Conectividad entre equipos.


🔄 Paso 1. Actualizar el sistema

Antes de instalar cualquier paquete es recomendable actualizar la información de los repositorios.

Ejecuta:

sudo apt update

Posteriormente actualiza los paquetes instalados:

sudo apt upgrade -y

¿Por qué realizar este paso?

Mantiene el sistema actualizado y garantiza que se instalará la versión más reciente disponible de OpenSSH.


📥 Paso 2. Instalar el Servidor SSH

El paquete encargado de proporcionar el servicio es:

openssh-server

Instalarlo con:

sudo apt install openssh-server -y

Durante la instalación Debian generará automáticamente las claves criptográficas necesarias para el servicio.


🔍 Paso 3. Verificar que SSH esté instalado

Verifica la versión instalada:

ssh -V

Ejemplo de salida:

OpenSSH_10.xp1 Debian


🚀 Paso 4. Verificar el estado del servicio

Ejecuta:

sudo systemctl status ssh

Deberías observar algo similar a:

Active: active (running)


🔧 Paso 5. Iniciar el servicio manualmente

Si el servicio no está iniciado:

sudo systemctl start ssh


🔄 Paso 6. Reiniciar el servicio

Cuando se realizan cambios en la configuración:

sudo systemctl restart ssh


🟢 Paso 7. Configurar el arranque automático

Para que SSH inicie cada vez que el servidor arranque:

sudo systemctl enable ssh

Comprobar:

sudo systemctl is-enabled ssh

Salida esperada:

enabled


🌐 Paso 8. Identificar la dirección IP del servidor

Consultar la dirección IP:

ip a

o

hostname -I

Resultado esperado:

192.168.1.100


📡 Paso 9. Verificar que SSH escucha en el puerto 22

Ejecuta:

ss -tunlp | grep ssh

Resultado esperado:

LISTEN 0 128 0.0.0.0:22


💻 Paso 10. Instalar el Cliente SSH

En Debian normalmente ya está instalado, pero en caso contrario:

sudo apt install openssh-client -y

Verificar:

ssh -V


🔗 Paso 11. Realizar la primera conexión

Desde otro equipo Linux:

ssh usuario@192.168.1.100

Ejemplo:

ssh alumno@192.168.1.100

La primera vez aparecerá:

The authenticity of host can’t be established.

Are you sure you want to continue connecting (yes/no)?

Responder:

yes

Posteriormente introducir la contraseña del usuario.


🔎 Paso 12. Verificar la sesión remota

Una vez conectado ejecutar:

whoami

Resultado:

alumno

Consultar la IP del servidor:

hostname -I

Consultar nombre del equipo:

hostname


🛡️ Paso 13. Verificar el Firewall

Si utilizas UFW:

Comprobar estado:

sudo ufw status

Permitir conexiones SSH:

sudo ufw allow ssh

o

sudo ufw allow 22/tcp


🔐 Paso 14. Configuración básica de seguridad

Respaldar configuración:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Editar:

sudo nano /etc/ssh/sshd_config

Algunas recomendaciones:

Deshabilitar acceso directo de root:

PermitRootLogin no

Limitar intentos de autenticación:

MaxAuthTries 3

Cambiar tiempo de espera:

LoginGraceTime 30

Guardar cambios y reiniciar:

sudo systemctl restart ssh


🔑 Paso 15. Autenticación mediante claves SSH

Generar clave en el cliente:

ssh-keygen

Copiar la clave al servidor:

ssh-copy-id usuario@192.168.1.100

Ejemplo:

ssh-copy-id alumno@192.168.1.100

Posteriormente podrás conectarte sin escribir contraseña:

ssh alumno@192.168.1.100


🧪 Actividades de comprobación

Realiza las siguientes pruebas:

Actividad 1

Verifica el estado del servicio SSH.

sudo systemctl status ssh


Actividad 2

Obtén la dirección IP del servidor.

hostname -I


Actividad 3

Conéctate desde otro equipo mediante SSH.

ssh usuario@IP_DEL_SERVIDOR


Actividad 4

Comprueba el puerto utilizado por SSH.

ss -tunlp | grep ssh


Actividad 5

Genera un par de claves y configura autenticación sin contraseña.

ssh-keygen

ssh-copy-id usuario@IP_DEL_SERVIDOR


📚 Preguntas de reflexión

  1. ¿Qué significa SSH?
  2. ¿Qué ventajas ofrece SSH sobre Telnet?
  3. ¿Cuál es el puerto predeterminado utilizado por SSH?
  4. ¿Qué función realiza el paquete openssh-server?
  5. ¿Qué ventajas tiene la autenticación mediante claves?
  6. ¿Por qué no es recomendable habilitar el acceso directo del usuario root?
  7. ¿Cómo verificar que el servicio SSH está funcionando correctamente?

✅ Evidencias a entregar

El estudiante deberá entregar un documento PDF con:

📸 Captura de la actualización del sistema.

📸 Captura de la instalación del servidor SSH.

📸 Captura del estado del servicio SSH.

📸 Captura de la dirección IP obtenida.

📸 Captura de la conexión exitosa desde otro equipo.

📸 Captura de la autenticación mediante clave pública.

📸 Captura de la ejecución de:

hostname

hostname -I

whoami


🏆 Conclusión

SSH es una de las herramientas más importantes para la administración de sistemas Linux. Su implementación permite gestionar servidores de manera remota, segura y eficiente, convirtiéndose en una habilidad esencial para administradores de sistemas, especialistas en redes, profesionales de ciberseguridad y desarrolladores que trabajan con infraestructuras Linux. 🐧🔐🚀