Introducción
¿Tiene problemas para acceder a un servidor remoto a través de SSH? Si SSH responde con un mensaje de "Conexión rechazada", es posible que deba modificar la solicitud o verificar la configuración.
En este tutorial, encontrará las razones más comunes por las que se rechaza la conexión SSH.
¿Por qué se rechaza la conexión cuando utilizo SSH?
Hay muchas razones por las que puede recibir el mensaje "Conexión rechazada " error al intentar SSH en su servidor. Para resolver este problema, primero debe identificar por qué el sistema rechazó su conexión a través de SSH.
A continuación encontrará algunas de las razones más comunes que pueden causar una denegación de conexión SSH.
Cliente SSH no instalado
Antes de solucionar otros problemas, el primer paso es comprobar si SSH está correctamente instalado. La máquina desde la que accede al servidor debe tener configurado el cliente SSH. Sin la configuración de cliente correcta, no puede acceder de forma remota a un servidor.
Para verificar si tiene el cliente SSH en su sistema, escriba lo siguiente en la ventana de la terminal:
ssh
Si el terminal proporciona una lista de ssh
opciones de comando, el cliente SSH está instalado en el sistema. Sin embargo, si responde con comando no encontrado , debe instalar el cliente OpenSSH.
Solución:instalar cliente SSH
Para instalar el cliente SSH en su máquina, abra la terminal y ejecute uno de los comandos que se enumeran a continuación.
Para sistemas Ubuntu/Debian:
sudo apt install openssh-client
Para sistemas CentOS/RHEL:
sudo yum install openssh-client
Demonio SSH no instalado en el servidor
Al igual que necesita la versión de cliente de SSH para acceder a un servidor remoto, necesita la versión de servidor para escuchar y aceptar conexiones. Por lo tanto, un servidor puede rechazar una conexión entrante si falta el servidor SSH o si la configuración no es válida.
Para verificar si SSH está disponible en el servidor remoto, ejecute el comando:
ssh localhost
Si la salida responde con "Conexión rechazada ", continúe con la instalación de SSH en el servidor.
Solución:instalar SSH en el servidor remoto
Para solucionar el problema de la falta de un servidor SSH, consulte cómo instalar el servidor OpenSSH.
Las credenciales son incorrectas
Los errores tipográficos o las credenciales incorrectas son razones comunes para una conexión SSH rechazada. Asegúrese de no escribir mal el nombre de usuario o contraseña .
Luego, verifique si está utilizando la dirección IP correcta. del servidor.
Finalmente, verifica que tienes el puerto SSH correcto abierto. Puede verificar ejecutando:
grep Port /etc/ssh/sshd_config
La salida muestra el número de puerto, como en la imagen de abajo.
El servicio SSH está inactivo
El servicio SSH debe estar habilitado y ejecutarse en segundo plano. Si el servicio está inactivo, el demonio SSH no puede aceptar conexiones.
Para verificar el estado del servicio, ingrese este comando:
sudo service ssh status
La salida debe responder que el servicio está activo. Si la terminal responde que el servicio está inactivo, habilítelo para resolver el problema.
Solución:habilitar el servicio SSH
Si el sistema muestra que el demonio SSH no está activo, puede iniciar el servicio ejecutando:
systemctl start sshd
Para permitir que el servicio se ejecute en el arranque, ejecute el comando:
sudo systemctl enable sshd
El cortafuegos impide la conexión SSH
SSH puede rechazar una conexión debido a las restricciones del firewall. El cortafuegos protege al servidor de conexiones potencialmente dañinas. Sin embargo, si tiene SSH configurado en el sistema, debe configurar el firewall para permitir las conexiones SSH.
Asegúrese de que el cortafuegos no bloquee las conexiones SSH, ya que esto puede causar la "conexión rechazada " error.
Solución:permitir conexiones SSH a través del cortafuegos
Para solucionar el problema que mencionamos anteriormente, puede usar ufw (Firewall sin complicaciones), la herramienta de interfaz de línea de comandos para administrar la configuración del cortafuegos.
Escriba el siguiente comando en la ventana de terminal para permitir las conexiones SSH:
sudo ufw allow ssh
El puerto SSH está cerrado
Cuando intenta conectarse a un servidor remoto, SSH envía una solicitud a un puerto específico. Para aceptar esta solicitud, un servidor debe tener abierto el puerto SSH.
Si el puerto está cerrado, el servidor rechaza la conexión.
De manera predeterminada, SSH usa el puerto 22. Si no ha realizado ningún cambio de configuración en el puerto, puede verificar si el servidor está escuchando las solicitudes entrantes.
Para enumerar todos los puertos que están escuchando, ejecute:
sudo lsof -i -n -P | grep LISTEN
Busque el puerto 22 en la salida y verifique si es ESTADO está configurado para ESCUCHAR .
Alternativamente, puede verificar si un puerto específico está abierto, en este caso, el puerto 22:
sudo lsof -i:22
Solución:abrir puerto SSH
Para habilitar el puerto 22 para ESCUCHAR solicitudes, use iptables
comando:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
También puede abrir puertos a través de la GUI modificando la configuración del firewall.
Depuración y registro de SSH
Para analizar los problemas de SSH en Linux, puede activar el modo detallado o depuración modo . Cuando habilita este modo, SSH imprime mensajes de depuración que ayudan a solucionar problemas de conexión, configuración y autenticación.
Hay tres niveles de verbosidad:
- nivel 1 (
-v
) - nivel 2 (
-vv
) - nivel 3 (
-vvv
)
Por lo tanto, en lugar de acceder a un servidor remoto usando la sintaxis ssh [server_ip]
agregue el -v
opción y ejecutar:
ssh -v [server_ip]
Alternativamente, puede usar:
ssh -vv [server_ip]
o
ssh -vvv [server_ip]