Cómo comprobar si un servidor SSH está en funcionamiento en Linux

LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás cómo comprobar si un servidor SSH está en ejecución en un sistema Linux. Utilizarás el comando systemctl status ssh para verificar el estado de ejecución del servicio, el comando ss -tuln para comprobar si el puerto SSH está abierto y escuchando, y el comando cat /etc/ssh/sshd_config para inspeccionar el archivo de configuración del servidor SSH. Estos pasos son fundamentales para solucionar problemas y verificar la funcionalidad del servidor SSH.

Comprobar el servicio SSH con systemctl status ssh

En este paso, aprenderás cómo comprobar el estado del servicio SSH en tu sistema Linux. SSH (Secure Shell) es un protocolo utilizado para conectarse de forma segura a una computadora remota. Es una herramienta fundamental para la administración de sistemas y el desarrollo.

En Linux, servicios como SSH a menudo son gestionados por systemd, un gestor de sistemas y servicios. El comando systemctl se utiliza para interactuar con systemd.

Para comprobar el estado del servicio SSH, utilizarás el comando systemctl status seguido del nombre del servicio, que es ssh.

Abre tu terminal si no está abierta. Puedes encontrar el icono de Xfce Terminal en el lado izquierdo de tu escritorio.

Escribe el siguiente comando en la terminal y presiona Enter:

systemctl status ssh

Verás una salida similar a esta:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
       Docs: man:sshd(8)
             man:ssh(1)
   Main PID: ... (sshd)
      Tasks: 1 (limit: ...)
     Memory: ...
        CPU: ...
     CGroup: /system.slice/ssh.service
             └─... /usr/sbin/sshd -D

...

Desglosemos las partes importantes de la salida:

  • ● ssh.service: Este es el nombre del servicio.
  • Loaded: loaded (...): Indica que el archivo de configuración del servicio ha sido cargado por systemd.
  • Active: active (running): Esta es la parte más importante. Te dice que el servicio SSH está actualmente en ejecución. Si estuviera detenido, mostraría algo como inactive (dead).
  • since ...: Muestra cuándo se inició el servicio.
  • Main PID: ... (sshd): El ID de proceso del proceso principal del demonio SSH (sshd).

Este comando es esencial para solucionar problemas de conectividad de red o verificar que un servicio se esté ejecutando como se espera.

Haz clic en Continuar para pasar al siguiente paso.

Verificar el puerto SSH con ss -tuln

En este paso, aprenderás cómo verificar qué puertos de red están abiertos y escuchando en tu sistema. Esto es crucial para entender cómo se puede acceder a servicios como SSH.

El comando ss es una utilidad para investigar sockets. Los sockets son puntos finales para enviar y recibir datos a través de una red. Usaremos ss con varias opciones para filtrar la salida:

  • -t: Muestra sockets TCP. SSH utiliza el protocolo TCP.
  • -u: Muestra sockets UDP.
  • -l: Muestra sockets en escucha. Estos son los sockets que están esperando conexiones entrantes.
  • -n: No resuelve nombres de servicios. Esto muestra números de puerto en lugar de nombres como ssh o http.

Combina estas opciones para ver todos los puertos TCP y UDP en escucha con sus valores numéricos.

Escribe el siguiente comando en tu terminal y presiona Enter:

ss -tuln

Verás una salida que enumera varios puertos en escucha. Busca la línea relacionada con SSH, que normalmente escucha en el puerto 22. La salida podría verse así (el orden exacto y otros puertos pueden variar):

Netid  State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port
tcp    LISTEN  0       128            0.0.0.0:22          0.0.0.0:*
tcp    LISTEN  0       128               [::]:22             [::]:*
udp    UNCONN  0       0              127.0.0.53%lo:53          0.0.0.0:*
udp    UNCONN  0       0                    0.0.0.0:68          0.0.0.0:*

En esta salida:

  • Netid: El protocolo de red (tcp o udp).
  • State: El estado del socket (LISTEN significa que está esperando conexiones).
  • Local Address:Port: La dirección IP local y el número de puerto en el que el servicio está escuchando. 0.0.0.0 significa que está escuchando en todas las direcciones IPv4 disponibles, y [::] significa que está escuchando en todas las direcciones IPv6 disponibles.
  • Peer Address:Port: La dirección y el puerto de la conexión remota (para los sockets en escucha, esto es *).

Deberías ver líneas que indiquen que el puerto TCP 22 está en estado LISTEN. Esto confirma que el servicio SSH está en ejecución y listo para aceptar conexiones en el puerto estándar de SSH.

Entender cómo comprobar los puertos abiertos es una habilidad fundamental para la resolución de problemas de red y la seguridad.

Haz clic en Continuar para pasar al siguiente paso.

Inspeccionar la configuración de SSH con cat /etc/ssh/sshd_config

En este último paso, examinarás el archivo de configuración principal del servidor SSH. Este archivo contiene ajustes que controlan cómo se comporta el servicio SSH, como el puerto en el que escucha, qué usuarios pueden conectarse y opciones de seguridad.

El archivo de configuración del demonio SSH (sshd) generalmente se encuentra en /etc/ssh/sshd_config. El directorio /etc es donde se almacenan los archivos de configuración del sistema.

Para ver el contenido de este archivo, puedes usar el comando cat. cat es un comando simple que lee archivos secuencialmente y los imprime en la salida estándar (tu terminal).

Escribe el siguiente comando en tu terminal y presiona Enter:

cat /etc/ssh/sshd_config

Verás todo el contenido del archivo sshd_config impreso en tu terminal. La salida contendrá muchas líneas, algunas comenzando con # (que son comentarios y son ignorados por el sistema) y otras que definen opciones de configuración.

Busca líneas que no estén comentadas (no comiencen con #). Algunas directivas importantes que podrías ver incluyen:

  • Port 22: Esto especifica el puerto en el que el servidor SSH escucha. Por defecto, es el 22.
  • ListenAddress 0.0.0.0: Especifica la dirección IPv4 en la que el servidor escucha.
  • ListenAddress ::: Especifica la dirección IPv6 en la que el servidor escucha.
  • PermitRootLogin prohibit-password: Controla si el usuario root puede iniciar sesión directamente a través de SSH.
  • PasswordAuthentication yes: Controla si se permite la autenticación por contraseña.
## This is the sshd server system configuration file.
## See sshd_config(5) for more information.

## The systemd service file for sshd uses EnvironmentFile to load
## the SSHD_CONFIG environment variable, setting this to /etc/ssh/sshd_config.
## ...

Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

## Ciphers and keying
#...

## Authentication:
LoginGraceTime 2m
PermitRootLogin prohibit-password
StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication yes

## Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

#IgnoreRhosts yes
#RhostsRSAAuthentication no
#HostbasedAuthentication no
#...

PasswordAuthentication yes
#PermitEmptyPasswords no

ChallengeResponseAuthentication no

#...

Leer archivos de configuración como este es una habilidad clave para entender y gestionar servicios de Linux. Aunque no modificarás el archivo en este laboratorio, saber dónde está y cómo ver su contenido es muy útil.

Ahora has comprobado con éxito el estado del servicio SSH, verificado su puerto de escucha e inspeccionado su archivo de configuración. Has adquirido una valiosa experiencia con comandos fundamentales de Linux para la gestión de servicios y la inspección de redes.

Haz clic en Continuar para completar el laboratorio y ver tu progreso.

Resumen

En este laboratorio, aprendiste cómo comprobar si un servidor SSH está en funcionamiento en un sistema Linux. Utilizaste el comando systemctl status ssh para verificar el estado activo del servicio y entender detalles clave como su estado cargado, estado activo y ID de proceso. Este comando es crucial para confirmar que el servicio SSH está operativo.

También aprendiste cómo verificar el puerto SSH utilizando el comando ss -tuln e inspeccionar el archivo de configuración de SSH ubicado en /etc/ssh/sshd_config utilizando el comando cat. Estos pasos brindan una comprensión más profunda de la configuración y los ajustes de red del servidor SSH.