Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
¿Cómo soluciono los errores «Connection refused» o «Connection timed out» cuando uso SSH para conectarme a mi instancia de EC2?
Recibo errores de «Connection refused» o «Connection timed out» cuando uso SSH para conectarme a mi instancia de Amazon Elastic Compute Cloud (Amazon EC2).
Descripción corta
Si se agota el tiempo de espera de la conexión, recibirás el siguiente mensaje de error del cliente SSH:
«ssh: connect to host ec2-X-X-X-X.compute-1.amazonaws.com port 22: Connection timed out»
El error Connection timed out se produce cuando el servidor no responde al cliente y el programa cliente se da por vencido (se agota el tiempo de espera).
Si un host rechaza tu conexión de forma remota, recibirás el siguiente mensaje de error:
«ssh: connect to host ec2-X-X-X-X.compute-1.amazonaws.com port 22: Connection refused»
Resolución
Error «Connection timed out»
Si recibes el error Connection timed out, comprueba las siguientes configuraciones:
- La dirección IP o el nombre de host de la instancia es correcto.
- La instancia pasa sus comprobaciones de estado.
- El grupo de seguridad de la instancia permite el tráfico entrante en el puerto TCP 22.
- Las listas de control de acceso de la red (ACL de la red) de la subred de instancias permiten el tráfico entrante en el puerto TCP 22 y el tráfico saliente en los puertos efímeros.
- La tabla de enrutamiento de la subred de instancias proporciona conectividad entre la instancia y el cliente SSH.
- No hay ningún firewall que bloquee la conexión entre el cliente SSH y la instancia.
- Los TCP Wrappers de la instancia no bloquean SSH. Para obtener más información, consulta 2.6.2. Archivos de configuración de TCP Wrappers en el sitio web de Red Hat.
Nota: Para comprobar si hay problemas con el firewall o los TCP Wrappers, debes tener acceso al sistema operativo (SO) a la instancia.
Error «Connection refused»
Si recibes el error Connection refused, comprueba las siguientes configuraciones:
- No hay ningún firewall en la instancia que bloquee la conexión SSH.
- El daemon SSH (sshd) está ejecutándose y a la escucha en el puerto 22.
Nota: Para comprobar las configuraciones anteriores, debes tener acceso a la instancia a nivel de sistema operativo.
Solución de problemas con instancias que superen ambas comprobaciones de estado
Para solucionar problemas con las instancias que superan las comprobaciones de estado, usa uno de los siguientes métodos de solución de problemas.
Ejecución del runbook AWSSupport-TroubleshootSSH
Se recomienda ejecutar el manual de automatización de AWSSupport-TroubleshootSSH. El runbook instala la herramienta Amazon EC2Rescue en la instancia para identificar y solucionar los problemas que bloquean una conexión SSH remota a un host de Linux.
Utilización de la consola serie de EC2 para Linux
Utiliza la consola serie de EC2 para Linux para solucionar problemas a nivel del sistema operativo, como problemas de arranque, problemas de configuración de red y problemas de configuración de SSH en los tipos de instancia compatibles.
Requisitos previos:
- Concede acceso a la consola a nivel de cuenta de AWS.
- Crea políticas de AWS Identity and Access Management (IAM) que concedan acceso a la consola a tus usuarios de IAM.
Nota: Cada instancia que utilice la consola serie de EC2 debe tener al menos un usuario de Linux basado en contraseña con acceso sudo.
Para obtener más información, consulta Configurar el acceso a la consola serie de EC2.
Si no hay una cuenta Linux con una contraseña de inicio de sesión configurada, debes ejecutar run ssm-user para restablecer la contraseña de una cuenta con acceso sudo.
Para comprobar que tu configuración no bloquea el acceso SSH, sigue estos pasos:
-
Utiliza la consola serie de EC2 para conectarte a la instancia de EC2 como usuario de Linux configurado con contraseña.
-
Si has configurado las reglas de iptables, ejecuta el siguiente comando para agregar una regla en iptables que acepte todas las conexiones SSH en el puerto 22:
sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
-
Si utilizas un firewall basado en el sistema operativo, desactívalo. Se recomienda utilizar grupos de seguridad en lugar de un firewall. Para desactivar el firewall basado en el sistema operativo, ejecuta los siguientes comandos en función de tu sistema operativo.
Importante: Los siguientes comandos borran todas las reglas principales de iptables y eliminan las reglas existentes. Los comandos también agregan una regla que permite las conexiones SSH entrantes y cambian la política predeterminada de la cadena principal a ACCEPT. Esta configuración garantiza que no afectes a la conectividad de red de la instancia al borrar la regla de iptables.
Distribuciones que usan UFW, como Ubuntu y Debian:sudo iptables -F$ sudo iptables -P INPUT ACCEPT sudo ufw disable
Distribuciones que usan firewalld, como Red Hat Enterprise Linux (RHEL) y CentOS:
sudo iptables -F $ sudo iptables -P INPUT ACCEPT sudo systemctl disable firewalld
Nota: Cuando recuperes el acceso a la instancia, comprueba la configuración del firewall.
-
Para verificar que SSH se esté ejecutando y que el puerto TCP 22 de SSH esté en estado de escucha, ejecuta el siguiente comando:
sudo systemctl restart sshd$ sudo ss -tpln | grep -iE '22|ssh'LISTEN 0 128 *:22 *:* users:(("sshd",pid=1901,fd=3)) LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1901,fd=4))
Nota: Si el sistema no tiene el comando ss, sustituye ss por el comando netstat heredado. Asegúrate de utilizar la misma sintaxis que el comando anterior.
-
Para asegurarte de que el TCP Wrapper no bloquee una conexión SSH, ejecuta el siguiente comando:
if [[ $( cat /etc/hosts.[ad]* | grep -vE '^#' | awk 'NF' | wc -l) -ne 0 ]];\ then sudo sed -i '1i sshd2 sshd : ALL: allow' /etc/hosts.allow; fi
Uso de AWS Systems Manager
Requisitos previos: Para usar Session Manager, una capacidad de AWS Systems Manager, la instancia debe ser un nodo administrado. El estado de ping del agente de AWS Systems Manager Agent (SSM Agent) de la instancia debe estar en línea y el rol de IAM adjunto debe tener los permisos AmazonSSMManagedInstanceCore. Asegúrate de cumplir con todos los requisitos previos de Session Manager.
Usa Session Manager para iniciar una sesión y acceder a la instancia.
Uso de un script de datos de usuario
Si no puedes utilizar los métodos de solución de problemas anteriores, utiliza un script de datos de usuario para desactivar el firewall a nivel del sistema operativo y el TCP Wrapper. A continuación, reinicia el servicio sshd.
Importante: Antes de detener e iniciar la instancia, lleva a cabo las siguientes acciones:
- Crea una copia de seguridad de tu volumen de Amazon Elastic Block Store (Amazon EBS).
Nota: Si tu instancia está respaldada por un almacén de instancias o tiene volúmenes de almacén de instancias que contienen datos, Amazon EC2 elimina los datos cuando se detiene la instancia. - Elimina temporalmente la instancia del grupo de Amazon EC2 Auto Scaling cuando completes los pasos de resolución.
Nota: Si detienes una instancia que está en un grupo de EC2 Auto Scaling, puedes terminar la instancia en función de la configuración de protección de desescalamiento horizontal. Las instancias que inicies con Amazon EMR, AWS CloudFormation o AWS Elastic Beanstalk pueden estar en un grupo de escalamiento automático. - Establece el comportamiento de apagado de las instancias en Detener para asegurarte de que las instancias no finalicen cuando las detengas.
Nota: Al detener e iniciar una instancia, la dirección IP pública de la instancia cambia. Se recomienda utilizar una dirección IP elástica para enrutar el tráfico externo hacia la instancia en lugar de una dirección IP pública.
Para configurar los datos de usuario de la instancia, sigue estos pasos:
- Abre la consola de Amazon EC2.
- En el panel de navegación, elige Instancias y, a continuación, selecciona la instancia.
- Detén la instancia.
- Selecciona Acciones y, a continuación, selecciona Configuración de la instancia.
- Selecciona Editar datos de usuario y, a continuación, introduce el siguiente script de datos de usuario:
Nota: El script de datos de usuario anterior está configurado para ejecutarse en cada reinicio de la instancia. Este método elimina todas las reglas principales de iptables.Content-Type: multipart/mixed; boundary="//"MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash iptables -P INPUT ACCEPT iptables -F systemctl restart sshd.service || service sshd restart if [[ $( cat /etc/hosts.[ad]* | grep -vE '^#' | awk 'NF' | wc -l) -ne 0 ]];\ then sudo sed -i '1i sshd2 sshd : ALL: allow' /etc/hosts.allow; fi --//
- Selecciona Guardar.
- Usa SSH para conectarte a la instancia.
- Cuando recuperes el acceso a la instancia, elimina el script de datos de usuario y, a continuación, comprueba que la configuración del firewall es correcta.
Información relacionada
Error connecting to your instance: Connection timed out
How do I troubleshoot Amazon EC2 instance connection timeout errors from the internet?
¿Cómo puedo solucionar los problemas de conexión a mi instancia de Linux de Amazon EC2 mediante SSH?
Vídeos relacionados


Contenido relevante
- preguntada hace un meslg...
- preguntada hace 4 meseslg...
- preguntada hace un meslg...
- preguntada hace 2 meseslg...
- preguntada hace 22 díaslg...