Cómo solucionar el error "Conexión denegada" en el puerto 22 de Linux
09:36, 14.05.2024
La administración de servidores en el sistema Linux no siempre es un proceso impecable, de vez en cuando puede haber algunos problemas y errores. Aquí compartiremos nuestra experiencia práctica sobre el error "conexión denegada". Cuando se produce un problema de este tipo, significa que la conexión a través del protocolo SSH no se puede llevar a cabo y es mejor seguir algunas de las recomendaciones profesionales con el fin de resolver este problema con un enfoque metódico.
Evaluación de la conectividad de los clientes
Para empezar a resolver este problema, hay que hacer algunas pruebas en el lado del cliente. Para ello, vamos a compartir en detalle la utilización de telnet y ping.
<H3> Prueba de accesibilidad del servidor mediante Ping
Lo primero que se puede hacer para realizar pruebas es utilizar ping e IP o nombre de host para definir si se puede llegar al servidor. Así es como puedes hacerlo:
$ ping 11.321.44.2
Si el servidor es alcanzable, obtendrá alguna información adicional y también las estadísticas de ping. Sin embargo, en caso de que no haya respuesta a este comando eso no garantiza al 100 por cien que el servidor sea inalcanzable.
Comprobación de disponibilidad de puertos con Telnet
Otra gran opción es comprobar la disponibilidad del puerto con el comando telnet, que utiliza una conexión basada en texto. Por lo tanto, vamos a utilizar el siguiente comando para probar el puerto SSH por defecto:
$ telnet 11.321.44.2 22
Si la conexión se establece con éxito, verá información sobre el sistema operativo y el software del servidor SSH. Si el intento no se establece y no tiene esos datos, entonces no significa que este servidor sea inalcanzable.
Examen de configuración del servidor SSH
Ahora, vamos a comprobar que el puerto SSH funciona de la manera correcta mediante la revisión de la configuración del servidor con el uso de:
$ grep Puerto /etc/ssh/sshd_config
Port 2222
Aquí no estamos usando el puerto 22 por defecto. A continuación, utilice la siguiente línea:
$ ssh -p 2222 nombre_usuario@su_servidorip
Este puerto se puede cambiar fácilmente a la predeterminada con el uso de:
$ grep Port /etc/ssh/sshd_config
Port 22
Después de eso, sólo debe hacer el reinicio con systemctl. Después de hacerlo, la conexión a través de un puerto por defecto se podría hacer:
$ sudo systemctl restart sshd
Inspección del estado del servicio SSH
El siguiente paso en nuestro procedimiento será una inspección del servicio SSH y una revisión del estado de la instalación.
Comprobación del estado del servicio SSH
La comprobación del estado es sencilla y debe incluir la siguiente línea:
$ systemctl status ssh
La salida de esta línea debería contener todos los detalles sobre los datos del proceso, el estado actual, los eventos de registro y también la configuración. Si no tiene una salida tan detallada y el servidor no se está ejecutando, entonces puede utilizar el siguiente comando:
$ sudo systemctl start sshd
Además de esto, también puede ser necesario habilitar el servicio SSH:
$ sudo systemctl enable sshd
Al final debe realizar un reinicio, y puede intentar comprobar el estado una vez más.
Configuración y examen de cortafuegos
Otra explicación de este error puede estar relacionada con el bloqueo del cortafuegos. Por eso necesitaremos especificar la herramienta que controla nuestro acceso al sistema.
ufw Uso del cortafuegos
Para inspeccionar si no hay bloqueo del tráfico SSH, utilice el siguiente comando:
$ sudo ufw status
Al revisar la salida, podrá ver si el tráfico está permitido y desde dónde. Si usted no puede ver esta información, a continuación, intente primero abrir el puerto por defecto por:
$ sudo ufw allow 22
A continuación, haga una recarga y vuelva a intentarlo:
$ sudo ufw reload
Configuración del cortafuegos iptables
El siguiente paso en este proceso será revisar las reglas iptables:
$ sudo iptables -n -L | grep 22
Con el uso de este comando, puede comprobar las reglas que permiten cierto tráfico en el puerto 22. Si usted no tiene el tráfico entrante en la salida, puede cambiar esto con la ayuda de:
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Ahora, vamos a explicar la línea antes mencionada para que usted tenga una mejor comprensión del proceso:
- 22 - esta parte determina el puerto.
- -p tcp - aquí mencionamos el protocolo necesita; en este caso, es TCP.
- -j ACCEPT - significa que el tráfico que coincida con dicha regla debe ser aceptado.
El siguiente paso será la instalación de iptables-persistent, esto se debe hacer para que sean persistentes después del reinicio:
$ sudo apt-get install iptables-persistent
Durante el proceso, se le pedirá que guarde las reglas actuales.
firewalld Configuración del cortafuegos
Utilizamos el siguiente comando para comprobar si el puerto SSH está abierto, esto debe hacerse en caso de que firewalld funcione en Linux:
$ sudo firewall-cmd --list-ports
Puede haber un escenario cuando este puerto no está en la lista por lo que puede permitir con la línea:
$ sudo firewall-cmd --permanent --add-port=22/tcp
Mediante el uso de este comando, está añadiendo el puerto 22 a la configuración permanente. Después de hacer este paso, haga una recarga:
$ sudo firewall-cmd --reload
Gestión de host SSH
Ahora, vamos a tratar de hacer frente a los problemas que puedan estar relacionados con las claves de host. Podemos hacer frente a esto borrando el archivo:
$ cp ~/.ssh/known_hosts ~/.ssh/known_hosts.bak && echo > ~/.ssh/known_hosts
Examen de los registros SSH
Otro método que podemos utilizar para solucionar el error es comprobar los logs SSH en busca de posibles problemas. Para comprobar los últimos logs utiliza tail y -f para revisar las nuevas entradas:
$ tail -f /var/log/auth.log
También puedes probar /var/log/secure, en caso de que la ubicación del comando de ejemplo no haya funcionado. Estas son 2 opciones típicas, pero también tienes otra pasada.
Análisis de problemas SSH
Si ninguna de las variantes mencionadas funcionó en su caso, entonces podemos ofrecerle una cosa más:
$ ssh -v asr@177.155.233.156
La salida le ayudará a determinar los problemas de conexión SSH.
Conclusión
Aquí compartimos contigo algunas recomendaciones prácticas sobre el error SSH en el sistema Linux. Hemos intentado incluir todas las estrategias más comunes con respecto a los problemas de conectividad más básicos. Comience por comprobar la configuración de SSH, luego comience a probar la configuración del cortafuegos y, por supuesto, también puede utilizar el análisis de problemas de SSH. Sólo siguiendo el procedimiento más simple, conseguirás una conexión SSH segura en tu sistema operativo (en nuestro caso Linux).