Cómo depurar conexiones SSH

How Debug Ssh Connections



Este tutorial repasará algunos métodos y técnicas rápidos que puede utilizar para diagnosticar varias conexiones SSH, incluso cuando no puede conectarse a SSH, errores de autenticación, etc.

NOTA: Antes de comenzar, asegúrese de que el dispositivo al que desea conectarse esté en línea y que el error no sea el resultado de que el dispositivo no esté disponible.







Problema 1: el servicio SSH no se está ejecutando

Una causa común de errores de conexión SSH es que el servicio no se ejecuta en el host remoto. Esto puede deberse a un cierre accidental del servicio o al servicio que no se inicia después de reiniciar el sistema.



Para verificar si el servicio SSH se está ejecutando, use el administrador del sistema con el comando:



sudosystemctl status sshd

El comando anterior debe informar si el servicio se está ejecutando o no, como se muestra en las capturas de pantalla a continuación.







Solución

Para resolver los problemas de SSH causados ​​por el servicio que no se está ejecutando, use el sistema para iniciar el servicio. Si el servicio responde con errores, verifique los registros y solucione los problemas informados en el registro.

Utilice el siguiente comando para verificar los registros de servicio.

sujeción 'sshd' /dónde/Iniciar sesión/auth.log

Utilice el siguiente comando para iniciar o detener el servicio SSH con systemd.

sudosystemctl start sshd

Problema 2: SSH en un puerto no estándar

El segundo problema común al depurar conexiones SSH es el uso de un puerto no estándar. Si SSH se está ejecutando en otro puerto que no sea el puerto predeterminado 22, no se conectará al host remoto a menos que especifique explícitamente el puerto en el que se está ejecutando SSH.

Para ver el puerto en el que se está ejecutando SSH, use una herramienta como netstat como se muestra a continuación:

[cientos@centos8 ~]$sudo netstat -ptln | sujeción ssh
tcp0 00.0.0.0:560.0.0.0:*ESCUCHA1131/sshd
tcp60 0:::56:::*ESCUCHA1131/sshd

La salida anterior muestra en qué puerto se está ejecutando el servicio SSH. En este caso, es el puerto 56.

Solución

Para resolver este problema, puede usar la información de netstat para especificar explícitamente el puerto en su comando ssh como:

sshnombre de usuario@ip -pag 56

Problema 3: otro servicio que usa el mismo puerto

Otra causa de errores de conexión SSH es si otro servicio o proceso también usa el mismo puerto que el servicio SSH. Por ejemplo, si SSH se especifica explícitamente para ejecutarse en el puerto 80 (idea terrible), un servicio como Apache puede estar usando el mismo puerto.

Para ver si otro proceso está usando el mismo puerto que SSH, verifique los registros usando el comando:

sudojournalctl-tsshd

Este comando debería devolver un error como el que se muestra a continuación, indicando si otro proceso usa el puerto vinculado a SSH.

sshd[110611]: error: enlazar al puerto80en 0.0.0.0 falló: dirección yaenusar

Es bueno asegurarse de que el error de enlace del puerto sea causado por otro servicio, no por medidas de seguridad como SELinux.

Solución

Hay varias formas que puede utilizar para resolver este problema. Éstos incluyen:

El primero es vincular el servicio SSH a un puerto diferente. Puede hacer esto editando el archivo de configuración SSH. Por ejemplo, cambie la entrada del puerto al puerto 3009 como se muestra en los comandos:

sudo nano /etc/ssh/sshd_config
Puerto3009

Otro método que puede utilizar para resolver este problema es detener el servicio mediante el puerto SSH. Por ejemplo, detenga el servicio apache usando el puerto 80 como:

sudosystemctl detener httpd
sudosystemctl deshabilitar httpd

Problema 4: Cortafuegos

Si ha probado todos los métodos anteriores y aún no tiene conexión SSH, puede pasar a la siguiente causa posible del problema: restricciones de firewall. Dependiendo del método de firewall que esté utilizando (UFW o Iptables), debe asegurarse de que el firewall permita conexiones SSH.

Solución

Las reglas de firewall son amplias y pueden variar según la configuración del sistema. Por tanto, no puedo cubrir todos los aspectos. Sin embargo, la siguiente es una solución simple para garantizar que el servicio SSH esté permitido en UFW Firewall.

sudoufw permitir<ssh_port>/tcp

También puede restablecer todas las reglas de UFW y comenzar de nuevo. Eso le permitirá solucionar problemas de las conexiones del firewall desde cero.

sudorestablecimiento de ufw

Problema 5: inicios de sesión con contraseña deshabilitados

A veces, puede configurar SSH para que no acepte inicios de sesión con contraseña y solo use autenticación de clave pública. Eso puede causar un problema si la clave pública no está disponible en el servidor o si falta su par de claves privadas.

Para verificar si los inicios de sesión con contraseña están permitidos, coloque la configuración de ssh como:

[cientos@centos8]$sudo sujeciónAutenticación de contraseña/etc/ssh/sshd_config
#PasswordAuthentication sí
Autenticación de contraseña
# Autenticación de contraseña. Dependiendo de su configuración de PAM,
# Autenticación PAM, luego habilite esto pero configure PasswordAuthentication

El resultado anterior muestra que se permiten inicios de sesión con contraseña.

Solución

Para resolver el problema anterior, puede utilizar dos métodos:

Primero, si tiene el valor establecido en no, cambie el valor de PasswordAuthentication a yes y reinicie el servicio ssh.

El otro método es crear un par clave-valor ssh y usarlo para iniciar sesión en el servidor. Para aprender a crear un par clave-valor ssh, use la siguiente guía.

https://linuxhint.com/find-ssh-public-key/

https://linuxhint.com/use-ssh-copy-id-command/

Conclusión

En esta guía rápida, analizamos las principales causas de los errores de conexión SSH y cómo puede resolverlos. Aunque esta guía cubre problemas comunes, es posible que encuentre errores específicos de su sistema según la configuración y los permisos.