Cómo solucionar el error de conexión SSH rechazada

El protocolo SSH (Secure Shell) es un método muy utilizado para el inicio de sesión remoto seguro de un ordenador a otro.
Proporciona conexiones cifradas para servicios de red a través de una red no segura, como Internet.
Sin embargo, no es infrecuente encontrarse con el frustrante error Conexión SSH denegada.
Este error es una señal de que tu intento de conectarte a un servidor mediante SSH no ha tenido éxito.
En esencia, este error se debe a la incapacidad del cliente SSH para establecer una conexión con el servidor SSH.
Es un poco como intentar hacer una llamada telefónica y recibir constantemente una señal de ocupado, indicando que no puedes comunicarte.

Definición de SSH y su uso

SSH ofrece más capacidades que FTP, que se utiliza principalmente para subir, borrar y modificar archivos en un servidor.
SSH, en cambio, permite un espectro más amplio de funciones.
Por ejemplo, si te encuentras con un problema que te impide acceder a tu sitio web WordPress, SSH te proporciona un medio para conectarte remotamente y solucionar el problema.

SSH también permite acceder a una serie de herramientas esenciales para los desarrolladores:Git: Un sistema de control de versiones crucial para seguir las modificaciones del código.
Esto es especialmente beneficioso para los equipos de desarrollo que colaboran en un mismo proyecto.

Compositor: Una herramienta para gestionar paquetes PHP.
Ayuda a integrar varios frameworks en el código de tu sitio web mediante la obtención de las bibliotecas y dependencias necesarias.

WP-CLI: Es la interfaz de línea de comandos de WordPress.
Facilita diversas tareas como crear nuevas instalaciones de WordPress, actualizar varios plugins simultáneamente e importar archivos multimedia.

npm: Un gestor de paquetes para JavaScript.
Abarca tanto una interfaz de línea de comandos como un registro para software JavaScript.

Es importante reconocer que el uso de SSH implica conocimientos técnicos avanzados.
Para los usuarios típicos de WordPress, es aconsejable buscar ayuda de desarrolladores o proveedores de alojamiento en lugar de intentar resolver los problemas mediante SSH de forma independiente.

Mismo problema, distinto mensaje

El error Conexión SSH denegada puede manifestarse de diversas formas, dependiendo de tu sistema operativo, cliente SSH y configuración de red.
Algunas variaciones comunes son:

  • Error de conexión rechazada al intentar iniciar sesión SSH.
  • SSH: conectar con el puerto 22 del host: Conexión denegada en sistemas basados en Linux o Unix.
  • Error de red: Conexión denegada en clientes SSH como PuTTY.
  • El sistema remoto rechazó la conexión en diferentes clientes SSH.
  • No se pudo abrir la conexión con el host, en el puerto 22: Falló la conexión en entornos Windows.
  • Errores de tiempo de espera que indican un fallo al establecer una conexión SSH.

Razones por las que se produce este error

Hay varios factores que pueden provocar un error de Conexión SSH Rechazada.
Comprender estas razones es crucial para solucionar el problema.

El servicio SSH no se ejecuta en el servidor

El servicio SSH, gestionado por el demonio SSH(sshd), debe estar ejecutándose activamente en el servidor para que la conexión se realice correctamente.
Si este servicio no se está ejecutando, tu cliente SSH no podrá establecer una conexión, lo que provocará un rechazo.
Entre las razones habituales por las que sshd no se está ejecutando se incluyen los reinicios del servidor sin reinicio automático del servicio, los cierres manuales del servicio o los errores en el servidor que hacen que el servicio se bloquee o no se inicie.

Puerto SSH o dirección IP incorrectos

Las conexiones SSH funcionan por defecto en el puerto 22.
Sin embargo, por razones de seguridad, algunos servidores operan SSH en un puerto diferente.
Si intentas conectarte al puerto por defecto mientras el servidor está escuchando en otro, la conexión fallará.
Del mismo modo, conectarse a una dirección IP incorrecta conduce a un callejón sin salida similar.
Asegurarte de que tienes la dirección IP y el puerto correctos para tu conexión SSH es crucial.
Puedes comprobar el puerto en el archivo de configuración SSH del servidor (/etc/ssh/sshd_config), en la directiva Puerto.

Credenciales incorrectas

Cuando se intenta establecer una conexión SSH, proporcionar las credenciales correctas es crucial para iniciar sesión con éxito.
Las credenciales suelen referirse al nombre de usuario y la contraseña o, en configuraciones más seguras, a un par de claves SSH.
Cuando estas credenciales son incorrectas o no coinciden, el servidor SSH rechazará la conexión.
Este rechazo es una medida de seguridad para evitar accesos no autorizados.

Restricciones del cortafuegos

Los cortafuegos actúan como guardianes del tráfico de red.
Si un cortafuegos de tu máquina local, de tu red o del servidor está configurado para bloquear el puerto SSH (normalmente el puerto 22), impedirá una conexión SSH.
Para resolverlo, debes ajustar la configuración del cortafuegos para permitir el tráfico a través del puerto SSH.
Esto implica establecer reglas en la configuración del cortafuegos para que acepte conexiones en el puerto 22 (o en tu puerto SSH personalizado).

Problemas de red

Los problemas relacionados con la red pueden variar desde simples configuraciones erróneas de DNS hasta cuestiones más complejas como caídas del servidor o interrupciones de la red.
Una configuración DNS incorrecta puede hacer que tu cliente SSH intente conectarse al servidor equivocado.
Herramientas como ping y traceroute pueden ser útiles para diagnosticar estos problemas de red.

Problemas con la clave SSH

Las claves SSH son un método seguro de autenticación, pero pueden ser una fuente de problemas de conexión si no se gestionan correctamente. Los problemas de autenticación basados en claves pueden surgir por claves no coincidentes (cuando el servidor no tiene la clave pública correcta), archivos de claves corruptos o permisos de archivo incorrectos en las claves. Asegurarte de que tu clave pública aparece correctamente en el archivo `~/.ssh/authorized_keys` del servidor y de que tu clave privada tiene los permisos adecuados (normalmente `600`) son pasos vitales para resolver estos problemas.

Problemas de configuración del servidor

Las configuraciones erróneas en el archivo de configuración SSH del servidor (`sshd_config`) pueden provocar una serie de problemas, entre ellos el rechazo de la conexión.
Algunos ejemplos son restringir el acceso SSH a determinadas direcciones IP, utilizar puertos no estándar sin una configuración adecuada del cliente, o desactivar la autenticación basada en claves cuando es el único método permitido por el cliente.
Para resolver estos problemas es necesario examinar y editar cuidadosamente `sshd_config`, y reiniciar el servicio SSH.

MaxStartups superados

El parámetro MaxStartups de sshd_config define el número máximo de conexiones no autenticadas al servidor SSH antes de que empiece a descartar nuevas peticiones.
Este ajuste ayuda a mitigar ciertos tipos de ataques de Denegación de Servicio (DoS).
Sin embargo, en un servidor ocupado, los intentos legítimos de conexión SSH pueden ser rechazados si este umbral es demasiado bajo.
En tales casos, aumentar el valor de MaxStartups puede ayudar a acomodar un mayor número de intentos de conexión simultáneos.

Pasos para solucionar el error de conexión SSH rechazada

Para solucionar el error Conexión SSH denegada, tenemos que abordar este problema sistemáticamente, tratando cada posible causa una por una.

Es importante tener en cuenta que la solución de problemas de SSH debe ser realizada por personas con conocimientos y habilidades técnicas avanzadas.
Ponte en contacto con un desarrollador si no estás cualificado para solucionar este error.

Comprueba si se está ejecutando el servidor SSH

Cuando inicias una conexión SSH, tu solicitud se dirige a este servicio.
Si el servicio SSH no se está ejecutando, tu intento de conexión no encuentra respuesta, lo que provoca un error de «Conexión denegada».
Esto es similar a intentar llamar a un negocio fuera de horario cuando no hay nadie para responder.
Utilizando sudo systemctl status ssh se comprueba el estado operativo del demonio SSH, que gestiona las conexiones SSH entrantes.
Si el servicio está inactivo o detenido, no se podrá establecer tu conexión.

Para comprobar si SSH está caído:

  1. Abre el terminal.
  2. Escribe sudo systemctl status ssh y pulsa Intro.
    Este comando comprueba el estado del servicio SSH.

Si el comando devuelve una respuesta de caído, muerto, inactivoetc., el servidor SSH no se está ejecutando.

SSH inactivo en terminal Linux

Verifica la dirección IP del servidor y el puerto SSH

Asegurarte de que te estás conectando a la dirección IP y al puerto correctos es como verificar la dirección y la puerta para entrar en un edificio.
Si alguna de las dos es incorrecta, acabarás en el destino equivocado.
El número de puerto, normalmente 22 para SSH, actúa como una puerta específica para entrar en el servidor.
Los puertos abiertos pueden ser un riesgo para la seguridad, ya que pueden ofrecer a los piratas informáticos la oportunidad de infiltrarse en tu servidor.
En consecuencia, los puertos que no están en uso suelen cerrarse como medida de precaución contra este tipo de ataques.

Si te encuentras con un error de Conexión denegada, puede deberse a que el puerto 22 (el puerto SSH por defecto) u otro puerto SSH designado de tu servidor esté cerrado.
Para comprobar el estado de los puertos de tu servidor, puedes ejecutar el siguiente comando:

  • sudo lsof -i -n -P | grep LISTEN

Este comando mostrará una lista de puertos en estado LISTEN.
En concreto, debes buscar en esta lista el puerto 22 o el puerto SSH personalizado asignado a tu servidor.
Si no lo encuentras, reabrir el puerto necesario es esencial para establecer una conexión con tu servidor.

Inspecciona la configuración del cortafuegos

Los puertos abiertos son esenciales para la conectividad de los servidores, pero también pueden ser una vulnerabilidad para la seguridad, lo que hace que los cortafuegos se configuren para bloquear estas conexiones.
Esta medida de protección, aunque eficaz contra los piratas informáticos, puede causar inadvertidamente problemas a los usuarios legítimos.
Si intentas conectarte mediante SSH a tu servidor y aparece el error «Conexión denegada», es posible que la configuración de tu cortafuegos sea la causa.

Para investigarlo, debes examinar las reglas de tu cortafuegos.
Puedes mostrar estas reglas en tu interfaz de línea de comandos con comandos específicos para reglas IPv4 e IPv6:

  • Para las reglas IPv4, utiliza: sudo iptables-save
  • Para las reglas IPv6, utiliza: sudo ip6tables-save

Aunque los resultados variarán en función de tu configuración específica, hay elementos clave que debes tener en cuenta para determinar si tu cortafuegos está bloqueando realmente las conexiones SSH:dport 22: Indica el puerto de destino, que suele ser el puerto 22 para las conexiones SSH.RECHAZAR: Si ves esto, indica que el cortafuegos está rechazando conexiones al puerto de destino especificado.ELIMINAR: Similar a «RECHAZAR», significa que se están bloqueando activamente las conexiones al puerto en cuestión.

Si buscas el puerto 22 en la salida de los comandos anteriores, podrás averiguar si tu cortafuegos está bloqueando la conexión SSH.
Si es así, tendrás que ajustar las reglas de tu cortafuegos para permitir el paso de las peticiones SSH y resolver así el error «Conexión denegada».

Haz ping al servidor SSH

Cuando te encuentras con un error de conexión SSH rechazada, suele indicar un problema con la conexión de red entre tu ordenador y el servidor SSH.
Diagnosticar los problemas de red es crucial porque ayuda a determinar si el problema radica en la ruta de red o en el propio servidor SSH.
Los problemas relacionados con la red pueden ir desde simples problemas de conectividad, como la caída del servidor, hasta problemas más complejos, como configuraciones de cortafuegos que bloquean el puerto SSH.

Hacer ping al servidor ayuda a determinar si se puede llegar al servidor a través de la red.
Si recibes una respuesta, significa que la conexión de red con el servidor está intacta, y que el problema puede estar en otra parte.
Si no recibes respuesta, indica un problema de conectividad de la red.

Windows

  1. Abre el Símbolo del sistema escribiendo cmd en la barra de búsqueda y pulsando Intro.
  2. Escribe a ping [server-address] (sustituye [server-address] por la IP o el nombre de host reales del servidor) y pulsa Intro.
  3. Observa si el comando ping devuelve una respuesta.

Terminal Windows con comando ping

Mac

  1. Abrir Terminal desde Aplicaciones > Utilidades.
  2. Escribe a ping [server-address] y pulsa Intro.
  3. Comprueba si hay respuesta del servidor.

Gestionar adecuadamente las claves SSH

Las claves SSH desempeñan un papel vital en el establecimiento de una conexión segura y autenticada entre el cliente y el servidor.
Ante un error de conexión SSH rechazada, es esencial verificar que las claves SSH están correctamente configuradas.
El error puede deberse a que las claves SSH estén mal configuradas, falten o estén dañadas.
El archivo `authorized_keys` del servidor es especialmente crucial, ya que contiene las claves públicas permitidas para conectarse.
Asegurarse de que este archivo tiene la clave pública correcta y está bien configurado es un paso fundamental para solucionar los problemas de conexión SSH.

Verifica tu par de claves SSH

  1. Comprueba si tienes generado un par de claves SSH.
    Normalmente, se encuentra en
    ~/.ssh directorio.
  2. Si no tienes un par de claves SSH o si posiblemente está dañado, genera uno nuevo utilizando el comando ssh-keygen.

Un par de claves SSH ausente o dañado en tu máquina local puede ser la causa principal del error de conexión denegada.
Generar un nuevo par de claves garantiza que dispones de una clave privada y pública válidas para la autenticación.

Comprueba el archivo authorized_keys del servidor

  1. Accede al servidor utilizando un método alternativo, como la autenticación por contraseña, si falla la autenticación por clave.
  2. Navega a la carpeta ~/.ssh del usuario con el que intentas conectarte.
  3. Abre el archivo llaves_autorizadas con un editor de texto.
  4. Asegúrate de que tu clave pública aparece en este archivo.
    Si no es así, añádela.

La dirección llaves_autorizadas contiene las claves públicas permitidas para acceder al servidor.
Si tu clave pública no aparece en la lista o está introducida incorrectamente, el servidor rechazará la conexión SSH.

Asegúrate de que los permisos de los archivos SSH son correctos

  1. Para el archivo ~/.ssh utiliza chmod 700 ~/.ssh.
  2. Para las llaves_autorizadas utiliza chmod 600 ~/.ssh/authorized_keys.

Unos permisos de archivo incorrectos pueden provocar vulnerabilidades de seguridad y hacer que SSH rechace conexiones debido a restricciones de política.
Establecer los permisos correctos es esencial para una autenticación de claves SSH segura y funcional.

Verifica las configuraciones SSH

  1. En el servidor, comprueba el archivo de configuración SSH (normalmente /etc/ssh/sshd_config).
  2. Asegúrate de que la autenticación de claves está activada con la línea PubkeyAuthentication sí.
  3. Reinicia el servicio SSH si se ha realizado algún cambio (p. ej, sudo systemctl restart ssh en la mayoría de los sistemas Linux).

Una configuración SSH incorrecta puede impedir la autenticación de claves.
Es crucial asegurarse de que el demonio SSH está configurado para aceptar la autenticación de clave pública.

Prueba la conexión SSHPrueba la conexión SSH después de hacer estos cambios para comprobar si se ha resuelto el problema.

  • Desde tu máquina local, vuelve a intentar conectarte por SSH al servidor utilizando ssh -i [path-to-private-key] [username]@[server-address].

Ajustar MaxStartups

El parámetro MaxStartups de la configuración del demonio SSH (sshd_config) es crucial para controlar el número de conexiones simultáneas y no autenticadas al servidor SSH.
Cuando el servidor está ocupado o sometido a una gran carga de intentos de conexión SSH, alcanzar el límite establecido por MaxStartups puede provocar que se rechacen nuevos intentos de conexión.
Ajustar este parámetro puede ser una solución si estás experimentando rechazos de conexión SSH debido a un elevado número de conexiones SSH simultáneas, especialmente en entornos con mucho tráfico SSH o durante las horas punta de uso.

Para ajustar el parámetro MaxStartups:

  1. Accede al archivo sshd_config del servidor, que suele estar en /etc/ssh/sshd_config.
  2. Accede al servidor utilizando un método alternativo si SSH no está disponible, como el acceso directo a la consola.
  3. Abre el archivo sshd_config con un editor de texto.
  4. Buscar en MaxStartups parámetro.
    Puede estar comentado por defecto.
  5. Modifica el valor o descoméntalo y establece un nuevo valor.

El parámetro `MaxStartups` se define como `MaxStartups start:rate:full`.

  • iniciar: El número máximo de conexiones no autentificadas antes de que comience la limitación de velocidad.
  • tasa: El porcentaje de probabilidad de abandonar una nueva conexión una vez que se alcanza «inicio».
  • completo: El número máximo de conexiones no autentificadas antes de que se descarten todas las nuevas conexiones.

Por ejemplo, establecer `MaxStartups 30:50:100` significa que una vez alcanzadas 30 conexiones no autenticadas, hay un 50% de probabilidades de que se descarte una nueva conexión, llegando hasta el 100% de probabilidad cuando se alcanzan las 100 conexiones.

  1. Después de modificar el archivo sshd_config archivo, guarda los cambios.
  2. Reinicia el servicio SSH para aplicar los cambios.
    Esto puede hacerse utilizando un comando como
    sudo systemctl restart ssh en la mayoría de los sistemas Linux.

Ajustar este parámetro ayuda a gestionar un gran volumen de conexiones SSH entrantes, reduciendo la probabilidad de que se rechacen conexiones legítimas.
Intenta volver a conectarte por SSH al servidor desde tu máquina cliente para confirmar si se ha resuelto el problema.

Consulta los registros para obtener más información

Los archivos de registro SSH son como diarios detallados que registran los intentos de acceso al servidor.
Estos registros pueden proporcionar mensajes de error específicos o pistas sobre por qué se rechazó una conexión, de forma muy parecida a un informe de diagnóstico.
Examinando estos registros, puedes obtener información sobre la naturaleza exacta del problema, orientando tu solución de problemas de forma más específica.

Para ver los registros:

  1. Accede al archivo de registro SSH, normalmente /var/log/auth.log.
  2. Busca entradas relacionadas con tus intentos de conexión.
  3. Analiza cualquier mensaje de error o entrada inusual en busca de pistas para resolver el problema.

Conclusión

Resolver un error de «Conexión SSH denegada» requiere un enfoque preciso para diagnosticar y abordar varias causas potenciales, que van desde problemas del lado del servidor, como un servicio SSH inactivo o restricciones del cortafuegos, hasta problemas del lado del cliente, como la conectividad de red o la mala gestión de la clave SSH.
Siguiendo minuciosamente los pasos descritos, se puede eliminar sistemáticamente cada obstáculo que impida una conexión SSH satisfactoria.
Este proceso, muy parecido a una serie de apretones de manos y verificaciones de identidad en un encuentro para establecer la confianza, depende de un profundo conocimiento de las conexiones SSH.
En consecuencia, un enfoque meticuloso, paciente y orientado a los detalles es clave para diagnosticar y resolver eficazmente estos errores, asegurando una conexión estable con el servidor.


Say goodbye to website errors

Share article

Leave a comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Your email address will never be published or shared. Required fields are marked *

Comment*

Name *