Solución de problemas de conexión a la instancia de Linux - Amazon Elastic Compute Cloud

Solución de problemas de conexión a la instancia de Linux

La información y errores comunes que se presentan a continuación pueden ayudarle a solucionar problemas relacionados con la conexión a la instancia de Linux.

Causas comunes de problemas de conexión

Le recomendamos que para solucionar los problemas de conexión a instancias compruebe que ha realizado correctamente las siguientes tareas.

Compruebe el nombre de usuario de su instancia

Puede conectarse a la instancia mediante el nombre de usuario de su cuenta de usuario o el nombre de usuario predeterminado de la AMI que utilizó para lanzar la instancia.

  • Obtener el nombre de usuario de su cuenta de usuario.

    Para obtener más información sobre cómo crear una cuenta de usuario, consulte Administración de usuarios del sistema en la instancia de Linux.

  • Obtenga el nombre de usuario predeterminado para la AMI que utilizó para iniciar la instancia:

    AMI utilizada para iniciar la instancia. Nombre de usuario predeterminado

    AL2023

    Amazon Linux 2

    Amazon Linux

    ec2-user
    CentOS centos o ec2-user
    Debian admin
    Fedora fedora o ec2-user
    RHEL ec2-user o root
    SUSE ec2-user o root
    Ubuntu ubuntu
    Oracle ec2-user
    Bitnami bitnami
    Rocky Linux rocky
    Otro Comprobación con el proveedor de AMI
Compruebe que las reglas del grupo de seguridad permiten tráfico

Asegúrese de que el grupo de seguridad asociado a la instancia permita el tráfico SSH que ingresa desde la dirección IP. El grupo de seguridad predeterminado de la VPC no permite el tráfico SSH entrante de forma predeterminada. El grupo de seguridad creado por el Launch Wizard de instancias habilita el tráfico SSH de forma predeterminada. Para ver los pasos para agregar una regla para el tráfico de SSH entrante a su instancia de Linux, consulte Reglas para conectarse a las instancias desde un equipo. Para ver los pasos para realizar la comprobación, consulte Error connecting to your instance: Connection timed out.

Verifique que la instancia esté lista

Una vez lanzada la instancia, pueden transcurrir unos minutos hasta que esté lista para conectarse. Compruebe su instancia para asegurarse de que se está ejecutando y ha superado sus comprobaciones de estado.

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, elija Instances (Instancias) y seleccione la instancia.

  3. Compruebe lo siguiente:

    1. En la columna Instance state (Estado de instancia), compruebe que la instancia esté en el estado running.

    2. En la columna Status check (Comprobación de estado), compruebe que la instancia haya superado las dos comprobaciones de estado.

Compruebe que haya cumplido con todos los requisitos previos para conectarse.

Asegúrese de tener toda la información que necesita para conectarse. Para obtener más información, consulte Conexión con la instancia de Linux.

Para obtener información sobre los requisitos previos específicos de los tipos de conexión, como SSH, EC2 Instance Connect, OpenSSH, PuTTY y más, consulte las siguientes opciones.

Linux o macOS X

Si el sistema operativo del equipo local es Linux o macOS X, compruebe los requisitos previos específicos para las siguientes opciones de conexión:

Windows

Si el sistema operativo del equipo local es Windows, compruebe los requisitos previos específicos para las siguientes opciones de conexión:

Error connecting to your instance: Connection timed out

Si intenta conectarse a la instancia y recibe el mensaje de error Network error: Connection timed out o Error connecting to [instance], reason: -> Connection timed out: connect, pruebe lo siguiente:

Compruebe las reglas del grupo de seguridad.

Necesita un grupo de seguridad que permita el tráfico de entrada de la dirección IPv4 pública en el puerto adecuado.

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, elija Instances (Instancias) y seleccione la instancia.

  3. En la ficha Security (Seguridad) de la parte inferior de la página de la consola, debajo de Inbound rules (Reglas de entrada), compruebe la lista de reglas efectivas para la instancia seleccionada.

    • En instancias de Linux: compruebe que hay una regla que permite el tráfico desde el equipo hasta el puerto 22 (SSH).

    • En instancias de Windows: compruebe que hay una regla que permite el tráfico desde el equipo hasta el puerto 3389 (RDP).

    Si su grupo de seguridad no tiene una regla que permita el tráfico entrante desde su ordenador local, agregue una regla a su grupo de seguridad. Para obtener más información, consulte Reglas para conectarse a las instancias desde un equipo.

  4. Para ver la regla que permite el tráfico entrante, consulte el campo Source (Fuente). Si el valor es una sola dirección IP y si la dirección IP no es estática, se asignará una nueva dirección IP cada vez que reinicie el equipo. Esto hará que la regla no incluya el tráfico de la dirección IP de su equipo. La dirección IP puede no ser estática si el equipo se encuentra en una red corporativa, si se conecta mediante un proveedor de servicios de Internet (ISP), o si la dirección IP de su equipo es dinámica y cambia cada vez que se reinicia el equipo. Para garantizar que la regla de grupo de seguridad permita el tráfico entrante desde el equipo local, en lugar de especificar una sola dirección IP para Source (Fuente), en su lugar, especifique el rango de direcciones IP que utilizan los equipos cliente.

    Si desea obtener más información acerca de las reglas del grupo de seguridad, consulte Security group rules (Reglas del grupo de seguridad) en la Guía del usuario de Amazon VPC.

Compruebe la tabla de ruteo de la subred.

Necesita una ruta que envíe todo el tráfico destinado fuera de la VPC al gateway de Internet para la VPC.

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, elija Instances (Instancias) y seleccione la instancia.

  3. En la ficha Networking (Redes), tome nota de los valores del ID de VPC y el ID de subred.

  4. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  5. En el panel de navegación, elija Internet Gateways (Gateways de Internet). Verifique que hay una gateway de Internet adjunta a la VPC. De lo contrario, elija Create internet gateway (Crear gateway de Internet), escriba un nombre para la gateway de Internet y elija Create internet gateway (Crear gateway de Internet). A continuación, para la gateway de Internet que creó, elija Actions (Acciones), Attach to VPC (Conectar a VPC), seleccione la VPC y, a continuación, elija Attach internet gateway (Conectar gateway de Internet) para conectarla a la VPC.

  6. En el panel de navegación, elija Subnets (Subredes) y, a continuación, seleccione la suya.

  7. En la pestaña Route Table (Tabla de ruteo), verifique que haya una ruta con 0.0.0.0/0 como destino y la gateway de Internet de la VPC como destino. Si está conectando con la instancia utilizando la dirección IPv6, verifique que existe una ruta para todo el tráfico IPv6 (::/0) que apunte a la gateway de Internet. De lo contrario, realice lo siguiente:

    1. Elija el ID de la tabla de ruteo (rtb-xxxxxxxx) para navegar a la tabla de ruteo.

    2. En la pestaña Routes (Rutas), elija Edit routes (Editar rutas). Elija Add route (Añadir ruta) y utilice 0.0.0.0/0 como destino y la gateway de Internet como objetivo. Para IPv6, elija Add route (Añadir ruta) y utilice ::/0 como destino y la gateway de Internet como objetivo.

    3. Elija Save routes (Guardar rutas).

Compruebe la lista de control de acceso (ACL) a la red para la subred.

Las ACL de red deben permitir el tráfico entrante desde su dirección IP local a través del puerto 22 (para las instancias de Linux) o del puerto 3389 (para las instancias de Windows). También deben permitir el tráfico saliente que se dirija a los puertos efímeros (1024-65535).

  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, elija Subnets.

  3. Seleccione su subred.

  4. En la pestaña Network ACL (ACL de red), en Inbound rules (Reglas de entrada), verifique que las reglas permitan el tráfico entrante desde su computadora a través del puerto requerido. Si no es así, elimine o modifique la regla que esté bloqueando el tráfico.

  5. En Outbound rules (Reglas de salida), verifique que las reglas permitan el tráfico saliente hacia su equipo a través de los puertos efímeros. Si no es así, elimine o modifique la regla que esté bloqueando el tráfico.

Si el equipo está en una red corporativa,

pregunte al administrador de red si el firewall interno permite el tráfico de entrada y salida del equipo en el puerto 22 (para instancias de Linux) o el puerto 3389 (para instancias de Windows).

Si tiene un firewall en el equipo, compruebe que permite el tráfico de entrada y salida del equipo en el puerto 22 (para las instancias de Linux) o el puerto 3389 (para instancias de Windows).

Compruebe que la instancia tiene una dirección IPv4 pública.

Si no, asocie una dirección IP elástica a su instancia. Para obtener más información, consulte Direcciones IP elásticas.

Compruebe la carga de la CPU en la instancia; el servidor puede estar sobrecargado.

AWS proporciona de forma automática datos como las métricas y el estado de la instancia de Amazon CloudWatch, que puede utilizar para comprobar cuánta carga de la CPU está en la instancia y, si es necesario, ajustar cómo se controlan las cargas. Para obtener más información, consulte Monitorear las instancias con CloudWatch.

Para conectarse con la instancia a través de la dirección IPv6, compruebe lo siguiente:

  • La subred debe estar asociada a una tabla de ruteo que tenga una ruta para el tráfico IPv6 (::/0) a una gateway de Internet.

  • Las reglas del grupo de seguridad deben permitir el tráfico de la dirección IPv6 local en el puerto adecuado (22 para Linux y 3389 para Windows).

  • Las reglas ACL de la red deben permitir el tráfico IPv6 de entrada y salida.

  • Si lanzó la instancia desde una AMI más antigua, tal vez no esté configurada para DHCPv6 (las direcciones IPv6 no se reconocen automáticamente en la interfaz de red). Para obtener más información, consulte Configure IPv6 on your instances (Configuración de IPv6 en las instancias) en la Guía del usuario de Amazon VPC.

  • El equipo local debe tener una dirección IPv6 y estar configurado para usar IPv6.

Error: no se puede cargar la clave... Se espera: CUALQUIER CLAVE PRIVADA

Si intenta conectarse a su instancia y obtiene el mensaje de error, unable to load key ... Expecting: ANY PRIVATE KEY, el archivo en el que está almacenada la clave privada está configurado de forma incorrecta. Si el archivo de clave privada termina en .pem, es posible que siga estando configurado de forma incorrecta. Una causa posible para un archivo de clave privada configurado incorrectamente es que falte un certificado.

Si el archivo de clave privada está configurado de forma incorrecta, siga estos pasos para resolver el error
  1. Cree un nuevo par de claves. Para obtener más información, consulte Crear un par de claves mediante Amazon EC2.

    nota

    Otra opción es crear un nuevo par de claves mediante una herramienta de terceros. Para obtener más información, consulte Crear un par de claves con una herramienta de terceros e importar la clave pública a Amazon EC2.

  2. Añade el nuevo par de claves a su instancia. Para obtener más información, consulte Perdí mi clave privada. ¿Cómo puedo conectarme a mi instancia de Linux?.

  3. Conecte a la instancia mediante el nuevo par de claves

Error: User key not recognized by server

Si usa SSH para conectarse con la instancia
  • Use ssh -vvv para obtener información detallada de depuración triple:

    ssh -vvv -i path/key-pair-name.pem instance-user-name@ec2-203-0-113-25.compute-1.amazonaws.com

    El resultado del ejemplo siguiente muestra lo que puede ver si intenta conectar con la instancia mediante una clave que el servidor no reconoce:

    open/ANT/myusername/.ssh/known_hosts). debug2: bits set: 504/1024 debug1: ssh_rsa_verify: signature correct debug2: kex_derive_keys debug2: set_newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug2: set_newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug2: service_accept: ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT received debug2: key: boguspem.pem ((nil)) debug1: Authentications that can continue: publickey debug3: start over, passed a different list publickey debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password debug3: authmethod_lookup publickey debug3: remaining preferred: keyboard-interactive,password debug3: authmethod_is_enabled publickey debug1: Next authentication method: publickey debug1: Trying private key: boguspem.pem debug1: read PEM private key done: type RSA debug3: sign_and_send_pubkey: RSA 9c:4c:bc:0c:d0:5c:c7:92:6c:8e:9b:16:e4:43:d8:b2 debug2: we sent a publickey packet, wait for reply debug1: Authentications that can continue: publickey debug2: we did not send a packet, disable method debug1: No more authentication methods to try. Permission denied (publickey).
Si usa PuTTY para conectarse con la instancia
  • Verifique que el archivo de clave privada (.pem) se ha convertido en el formato que reconoce PuTTY (.ppk). Para obtener más información acerca de la conversión de claves privadas, consulte Conéctese a la instancia de Linux desde Windows con PuTTY.

    nota

    En PuTTYgen, cargue el archivo de clave privada y seleccione Guardar clave privada en lugar de Generar.

  • Verifique que está conectando con el nombre de usuario adecuado para la AMI. Escriba el nombre de usuario en el cuadro Nombre de host de la ventana Configuración de PuTTY.

    AMI utilizada para lanzar la instancia Nombre de usuario predeterminado

    AL2023

    Amazon Linux 2

    Amazon Linux

    ec2-user
    CentOS centos o ec2-user
    Debian admin
    Fedora fedora o ec2-user
    RHEL ec2-user o root
    SUSE ec2-user o root
    Ubuntu ubuntu
    Oracle ec2-user
    Bitnami bitnami
    Rocky Linux rocky
    Otro Comprobación con el proveedor de AMI
  • Verifique que tiene una regla en el grupo de seguridad de entrada para permitir el tráfico de entrada en el puerto adecuado. Para obtener más información, consulte Reglas para conectarse a las instancias desde un equipo.

Error: Permiso denegado o conexión cerrada por [instancia] puerto 22

Si se conecta a la instancia mediante SSH y recibe alguno de los errores Host key not found in [directory], Permission denied (publickey), Authentication failed, permission denied o Connection closed by [instance] port 22, verifique que se está conectando con el nombre de usuario adecuado para la AMI y que ha especificado el archivo de clave privada adecuado (.pem) para la instancia.

Los nombres de usuario correctos son como siguen:

AMI utilizada para lanzar la instancia Nombre de usuario predeterminado

AL2023

Amazon Linux 2

Amazon Linux

ec2-user
CentOS centos o ec2-user
Debian admin
Fedora fedora o ec2-user
RHEL ec2-user o root
SUSE ec2-user o root
Ubuntu ubuntu
Oracle ec2-user
Bitnami bitnami
Rocky Linux rocky
Otro Comprobación con el proveedor de AMI

Por ejemplo, para utilizar un cliente SSH para conectarse a una instancia de Amazon Linux, utilice el siguiente comando:

ssh -i /path/key-pair-name.pem instance-user-name@ec2-203-0-113-25.compute-1.amazonaws.com

Confirme que está usando el archivo de clave privada que corresponde al par de claves que ha seleccionado cuando lanzó la instancia.

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, elija Instances (Instancias) y, luego, seleccione la instancia.

  3. En la ficha Details (Detalles), debajo de Instance details (Detalles de la instancia), compruebe el valor del Nombre del par de claves.

  4. Si no ha especificado un par de claves cuando lanzó la instancia, puede terminarla y lanzar otra nueva, asegurando que especifica un par de claves. Si se trata de una instancia que ha estado usando pero que ya no tiene el archivo .pem para el par de claves, puede remplazarlo por uno nuevo. Para obtener más información, consulte Perdí mi clave privada. ¿Cómo puedo conectarme a mi instancia de Linux?.

Si generó un par de claves propias, asegúrese de que el generador de claves está configurado para crear claves RSA. Las claves DSA no se aceptan.

Si obtiene un error Permission denied (publickey) y nada de lo anterior se cumple (por ejemplo, previamente pudo conectarse), es posible que los permisos del directorio principal de la instancia hayan cambiado. Los permisos de /home/instance-user-name/.ssh/authorized_keys deben limitarse al propietario únicamente.

Para verificar los permisos de la instancia
  1. Detenga la instancia y sepárela del volumen raíz. Para obtener más información, consulte Detención e iniciación de una instancia de Amazon EC2.

  2. Lance una instancia temporal en la misma zona de disponibilidad que la instancia actual (use la misma AMI o una similar a la que usó para la instancia actual) y adjunte el volumen raíz a la instancia temporal.

  3. Conéctese a la instancia temporal, cree un punto de montaje y monte el volumen que ha adjuntado.

  4. Para la instancia temporal, compruebe los permisos del directorio /home/instance-user-name/ del volumen adjunto. Si es necesario, ajuste los permisos como sigue:

    [ec2-user ~]$ chmod 600 mount_point/home/instance-user-name/.ssh/authorized_keys
    [ec2-user ~]$ chmod 700 mount_point/home/instance-user-name/.ssh
    [ec2-user ~]$ chmod 700 mount_point/home/instance-user-name
  5. Desmonte el volumen, sepárelo de la instancia temporal y vuelva a adjuntarlo a la instancia original. Asegúrese de que especifica el nombre de dispositivo correcto para el volumen raíz, por ejemplo, /dev/xvda.

  6. Inicie la instancia. Si ya no necesita la instancia temporal, puede terminarla.

Error: Unprotected Private Key File (Error: archivo de clave privada no protegido)

El archivo de clave privada debe estar protegido frente a operaciones de lectura y escritura de otros usuarios. Si otra persona además de usted puede leer o escribir la clave privada, entonces SSH omite la clave y verá el siguiente mensaje de advertencia.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0777 for '.ssh/my_private_key.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. bad permissions: ignore key: .ssh/my_private_key.pem Permission denied (publickey).

Si ve un mensaje similar cuando intenta iniciar sesión en la instancia, examine la primera línea del mensaje de error para verificar que está usando la clave pública correcta para la instancia. En el ejemplo anterior se usa la clave privada .ssh/my_private_key.pem con los permisos de archivo 0777, que permite a cualquiera leer o escribir en este archivo. Este nivel de permiso es muy inseguro, de forma que SSH omite esta clave.

Si se conecta desde macOS o Linux, ejecute el siguiente comando para corregir el error y sustituya la ruta del archivo de clave privada.

[ec2-user ~]$ chmod 0400 .ssh/my_private_key.pem

Si se conecta desde Windows, siga estos pasos en su computadora local.

  1. Vaya hasta el archivo .pem.

  2. Haga clic con el botón derecho en el archivo .pem y seleccione Properties (Propiedades).

  3. Elija la pestaña Seguridad.

  4. Seleccione Advanced (Avanzado).

  5. Compruebe que es el propietario del archivo. Si no es así, cambie el propietario a su nombre de usuario.

  6. Seleccione Disable inheritance (Desactivar la herencia) y Remove all inherited permissions from this object (Eliminar todos los permisos heredados de este objeto).

  7. Seleccione Add (Agregar), seleccione una entidad principal, ingrese su nombre de usuario y seleccione OK (Aceptar).

  8. Desde la ventana Permission Entry (Entrada de permisos), conceda permisos de lectura y seleccione OK (Aceptar).

  9. Haga clic en Apply (Aplicar) para asegurarse de que se guarde toda la configuración.

  10. Seleccione OK (Aceptar) para cerrar la ventana Advanced Security Settings (Configuración de seguridad avanzada).

  11. Seleccione OK (Aceptar) para cerrar la ventana Properties (Propiedades).

  12. Debería poder conectarse a la instancia de Linux desde Windows a través de SSH.

En el símbolo del sistema de Windows, ejecute los siguientes comandos.

  1. En el símbolo del sistema, vayas hasta la ubicación de ruta de acceso del archivo .pem.

  2. Ejecute el siguiente comando para restablecer y eliminar los permisos explícitos:

    icacls.exe $path /reset
  3. Ejecute el siguiente comando para conceder permisos de lectura al usuario actual:

    icacls.exe $path /GRANT:R "$($env:USERNAME):(R)"
  4. Ejecute el siguiente comando para desactivar la herencia y eliminar los permisos heredados.

    icacls.exe $path /inheritance:r
  5. Debería poder conectarse a la instancia de Linux desde Windows a través de SSH.

Error: La clave privada debe empezar por "-----BEGIN RSA PRIVATE KEY-----" y terminar por "-----END RSA PRIVATE KEY-----"

Si utiliza una herramienta externa, como ssh-keygen, para crear un par de claves de RSA, la clave privada se genera con el formato de clave OpenSSH. Cuando se conecte a la instancia, si utiliza la clave privada con el formato OpenSSH para descifrar la contraseña, aparecerá el error Private key must begin with "-----BEGIN RSA PRIVATE KEY-----" and end with "-----END RSA PRIVATE KEY-----".

Para resolver el error, la clave privada debe tener el formato PEM. Utilice el siguiente comando para crear la clave privada con el formato PEM:

ssh-keygen -m PEM

Error: Server refused our key o No supported authentication methods available

Si usa PuTTY para conectar con la instancia y obtiene alguno de los errores siguientes, Error: el servidor rechazó nuestra clave o Error: no hay disponibles métodos de autenticación admitidos, verifique que se está conectando con el nombre de usuario adecuado para la AMI. Escriba el nombre de usuario en el cuadro Nombre de usuario de la ventana Configuración de PuTTY.

Los nombres de usuario correctos son como siguen:

AMI utilizada para lanzar la instancia Nombre de usuario predeterminado

AL2023

Amazon Linux 2

Amazon Linux

ec2-user
CentOS centos o ec2-user
Debian admin
Fedora fedora o ec2-user
RHEL ec2-user o root
SUSE ec2-user o root
Ubuntu ubuntu
Oracle ec2-user
Bitnami bitnami
Rocky Linux rocky
Otro Comprobación con el proveedor de AMI

También debe comprobar que:

Cannot Ping Instance (No se puede ejecutar Ping en la instancia)

El comando ping es un tipo de tráfico ICMP — si no logra enviar un comando ping a la instancia, asegúrese de que las reglas de entrada del grupo de seguridad permiten el tráfico ICMP para el mensaje Echo Request desde todos los orígenes, o desde el equipo o la instancia desde la que ejecuta el comando.

Si no logra enviar un comando ping desde la instancia, asegúrese de que las reglas de salida del grupo de seguridad permiten el tráfico ICMP para el mensaje Echo Request a todos los destinos, o al host al que intenta mandar el comando.

Los comandos Ping también los puede bloquear un firewall o el tiempo de espera debido a problemas de latencia de red o hardware. Debe consultar a su administrador del sistema o red local para obtener ayuda para solución de problemas.

Error: el servidor ha cerrado inesperadamente la conexión de red

Si está conectando la instancia con PuTTY y recibe el error "El servidor ha cerrado inesperadamente la conexión de red", verifique que ha habilitado parámetros keepalives en la página Conexión de la Configuración de PuTTY para evitar la desconexión. Algunos servidores desconectan clientes cuando no reciben ningún dato dentro de un período de tiempo especificado. Defina el valor de segundos entre keepalives en 59 segundos.

Si sigue experimentando problemas después de habilitar los keepalives, pruebe a deshabilitar el algoritmo de Nagle en la página Conexión de la Configuración de PuTTY.

Error: no se pudo validar la clave de host para EC2 Instance Connect

Si rota las claves de host de instancia, las nuevas claves de host no se cargan de forma automática en la base de datos de claves de host de confianza de AWS. Esto provoca un error en la validación de la clave de host cuando intenta conectarse a la instancia mediante el cliente EC2 Instance Connect basado en explorador y no puede conectarse a la instancia.

Para resolver el error, debe ejecutar el script eic_harvest_hostkeys en la instancia, que carga la nueva clave de host en EC2 Instance Connect. El script se encuentra en /opt/aws/bin/ en las instancias Amazon Linux 2 y en /usr/share/ec2-instance-connect/ en las instancias de Ubuntu.

Amazon Linux 2
Para resolver el error de validación de la clave de host en una instancia Amazon Linux 2, haga lo siguiente:
  1. Conéctese a la instancia mediante SSH.

    Puede conectarse mediante la interfaz de línea de comandos (CLI) EC2 Instance Connect o con el par de claves SSH que se asignó a su instancia cuando la lanzó y el nombre de usuario predeterminado de la AMI que utilizó para lanzar la instancia. Para Amazon Linux 2, el nombre de usuario predeterminado es ec2-user.

    Por ejemplo, si su instancia se lanzó usando Amazon Linux 2, el DNS público de la instancia es ec2-a-b-c-d.us-west-2.compute.amazonaws.com y el par de claves es my_ec2_private_key.pem. Use el siguiente comando para SSH en su instancia:

    $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com

    Para obtener más información sobre cómo conectarse a la instancia, consulte Conéctese a la instancia de Linux desde Linux o macOS mediante SSH..

  2. Desplácese a la siguiente carpeta.

    [ec2-user ~]$ cd /opt/aws/bin/
  3. Ejecute el siguiente comando en la instancia.


    [ec2-user ~]$ ./eic_harvest_hostkeys

    Tenga en cuenta que una llamada exitosa no da como resultado ninguna salida.

    Ahora puede utilizar el cliente EC2 Instance Connect basado en explorador para conectarse a la instancia.

Ubuntu
Para resolver el error de validación de clave de host en una instancia de Ubuntu, haga lo siguiente:
  1. Conéctese a la instancia mediante SSH.

    Puede conectarse mediante la interfaz de línea de comandos (CLI) EC2 Instance Connect o con el par de claves SSH que se asignó a su instancia cuando la lanzó y el nombre de usuario predeterminado de la AMI que utilizó para lanzar la instancia. Para Ubuntu, el nombre de usuario predeterminado es ubuntu.

    Por ejemplo, si su instancia se lanzó con Ubuntu, el nombre de DNS público de la instancia es ec2-a-b-c-d.us-west-2.compute.amazonaws.com y el par de claves es my_ec2_private_key.pem. Use el siguiente comando para SSH en la instancia:

    $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com

    Para obtener más información sobre cómo conectarse a la instancia, consulte Conéctese a la instancia de Linux desde Linux o macOS mediante SSH..

  2. Desplácese a la siguiente carpeta.

    [ec2-user ~]$ cd /usr/share/ec2-instance-connect/
  3. Ejecute el siguiente comando en la instancia.


    [ec2-user ~]$ ./eic_harvest_hostkeys

    Tenga en cuenta que una llamada exitosa no da como resultado ninguna salida.

    Ahora puede utilizar el cliente EC2 Instance Connect basado en explorador para conectarse a la instancia.

No es posible conectarse a la instancia Ubuntu mediante EC2 Instance Connect

Si aparece un error al intentar conectarse a su instancia de Ubuntu mediante EC2 Instance Connect, puede utilizar la siguiente información para intentar solucionar el problema.

Causa posible

El paquete ec2-instance-connect de la instancia no es la última versión.

Solución

Actualice el paquete ec2-instance-connect de la instancia a la última versión, de la siguiente manera:

  1. Conéctese a la instancia mediante un método que no sea EC2 Instance Connect.

  2. Ejecute el siguiente comando en la instancia para actualizar el paquete ec2-instance-connect a la versión más reciente.

    apt update && apt upgrade

Perdí mi clave privada. ¿Cómo puedo conectarme a mi instancia de Linux?

Si pierde la clave privada para una instancia respaldada por EBS, puede volver a obtener acceso a la instancia. Para ello, debe detener la instancia, desconectar su volumen raíz y asociarlo a otra instancia como volumen de datos, modificar el archivo authorized_keys con una nueva clave pública, trasladar el volumen de nuevo a la instancia original y reiniciar la instancia. Para obtener más información acerca de cómo lanzar, conectar y detener instancias, consulte Ciclo de vida de la instancia.

Este procedimiento solo se admite para instancias con volúmenes raíz de EBS. Si el dispositivo raíz es un volumen del almacén de instancias, no puede utilizar este procedimiento para recuperar el acceso a la instancia; debe tener la clave privada para conectarse a la instancia. Para determinar el tipo de dispositivo raíz de la instancia, abra la consola de Amazon EC2, elija Instancias, seleccione la instancia, elija la pestaña Almacenamiento y, en la sección Detalles del dispositivo raíz compruebe el valor de Tipo de dispositivo raíz.

El valor es EBS o INSTANCE-STORE.

Además de los siguientes pasos, hay otras formas de conectarse a la instancia de Linux si extravía la clave privada. Para obtener más información, consulte ¿Cómo puedo conectarme a mi instancia de Amazon EC2 si he extraviado mi par de claves SSH después del lanzamiento inicial?

Paso 1: Crear un nuevo par de claves

Cree un nuevo par de claves mediante la consola de Amazon EC2 o una herramienta de terceros. Si desea dar al nuevo par de claves el mismo nombre que tenía la clave privada que perdió, primero debe eliminar el par de claves existente. Para obtener información sobre cómo crear un par de claves, consulte Crear un par de claves mediante Amazon EC2 o Crear un par de claves con una herramienta de terceros e importar la clave pública a Amazon EC2.

Paso 2: Obtener información sobre la instancia original y su volumen raíz

Tome nota de la siguiente información porque la necesitará para completar este procedimiento.

Para obtener información sobre la instancia original
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. Elija Instances (Instancias) en el panel de navegación y, a continuación, seleccione la instancia a la que desee conectarse. (Nos referiremos a ella como la instancia original).

  3. En la pestaña Details (Detalles), tome nota del ID de la instancia y del ID de la AMI.

  4. En la pestaña Networking (Redes), tome nota de la zona de disponibilidad.

  5. En la pestaña Storage (Almacenamiento), en Root device name (Nombre del dispositivo raíz), tome nota del nombre del dispositivo para el volumen raíz (por ejemplo, /dev/xvda). A continuación, en Block devices (Dispositivos de bloqueo), busque el nombre de este dispositivo y tome nota del ID del volumen (por ejemplo, vol-0a1234b5678c910de).

Paso 3: Detener la instancia original

Elija Instance state (Estado de la instancia) y Stop instance (Detener instancia). Si esta opción está desactivada, la instancia ya está detenida o bien su dispositivo raíz es un volumen de almacén de instancias.

aviso

Cuando detiene una instancia, se borran los datos contenidos en todos los volúmenes de almacén de instancias. Para conservar los datos de los volúmenes del almacén de instancias, asegúrese de realizar una copia de seguridad de ellos en un almacenamiento persistente.

Paso 4: Lanzar una instancia temporal

New console
Para iniciar una instancia temporal
  1. En el panel de navegación, elija Instances (Instancias) y, a continuación, Launch Instances (Lanzar instancias).

  2. En la sección Name and tags (Nobre y etiquetas), para Name (Nombre), ingrese Temporary (Provisorio).

  3. En la sección Application and OS Images (Imágenes de aplicaciones y SO), seleccione la misma AMI que utilizó para lanzar la instancia original. Si esta AMI no está disponible, puede crear una AMI que puede utilizar a partir de la instancia detenida. Para obtener más información, consulte Creación de una AMI basada en Amazon EBS.

  4. En la sección Instance type (Tipo de instancia), mantenga el tipo de instancia predeterminado.

  5. En la sección Key pair (Par de claves), para Key pair name (Nombre del par de claves), seleccione el par de claves existente para utilizar o crear uno nuevo.

  6. En la sección Network settings (Configuración de red), elija Edit (Editar) y, a continuación, para Subnet (Subred), seleccione una subred en la misma zona de disponibilidad que la instancia original.

  7. En el panel Summary (Resumen), elija Launch (Lanzar).

Old console

Elija Launch Instances (Lanzar instancias) y, a continuación, utilice el launch wizard para lanzar una instancia temporal con las siguientes opciones:

  • En la página Choose an AMI (Elegir una AMI), seleccione la misma AMI que utilizó para lanzar la instancia original. Si esta AMI no está disponible, puede crear una AMI que puede utilizar a partir de la instancia detenida. Para obtener más información, consulte Creación de una AMI basada en Amazon EBS.

  • En la página Choose an Instance Type (Elegir un tipo de instancia), deje el tipo de instancia predeterminado que el asistente haya seleccionado.

  • En la página Configure Instance Details (Configurar detalles de instancia), especifique la misma zona de disponibilidad que la de la instancia original. Si va a lanzar una instancia en una VPC, seleccione una subred en esta zona de disponibilidad.

  • En la página Add Tags (Añadir etiquetas), añada la etiqueta Name=Temporary a la instancia para indicar que se trata de una instancia temporal.

  • En la página Review (Revisión), seleccione Launch (Lanzar). Elija el par de claves que creó en el paso 1 y, a continuación, elija Launch Instances (Lanzar instancias).

Paso 5: Desconectar el volumen raíz de la instancia original y asociarlo a la instancia temporal

  1. En el panel de navegación, elija Volumes (Volúmenes) y seleccione el volumen de dispositivo raíz para la instancia original (tomó nota del ID de su volumen en uno paso previo). Elija Actions (Acciones), Detach volume (Desconectar volumen) y, luego, Detach (Desconectar). Espere a que el estado del volumen cambie a available. (Es posible que necesite seleccionar el icono Actualizar).

  2. Con el volumen todavía seleccionado, elija Actions (Acciones) y, a continuación, elija Attach Volume (Adjuntar volumen). Seleccione el ID de la instancia temporal, tome nota del nombre del dispositivo especificado en Device name (Nombre del dispositivo) (por ejemplo, /dev/sdf) y, a continuación, elija Attach volume (Adjuntar volumen).

    nota

    Si lanzó la instancia original a partir de una AMI de AWS Marketplace y el volumen contiene códigos de AWS Marketplace, primero debe detener la instancia temporal antes de poder adjuntar el volumen.

Paso 6: Agregar la nueva clave pública a authorized_keys en el volumen original montado en la instancia temporal

  1. Conéctese a la instancia temporal.

  2. Desde la instancia temporal, monte el volumen que adjuntó a la instancia para que pueda obtener acceso a su sistema de archivos. Por ejemplo, si el nombre de dispositivo es /dev/sdf, utilice los siguientes comandos para montar el volumen como /mnt/tempvol.

    nota

    El nombre de dispositivo podría aparecer de forma diferente en la instancia. Por ejemplo, los dispositivos montados como /dev/sdf podrían mostrarse como /dev/xvdf en la instancia. Algunas versiones de Red Hat (o sus variantes como CentOS), incluso pueden aumentar la letra final en cuatro caracteres, donde /dev/sdf se convierte en /dev/xvdk.

    1. Utilice el comando lsblk para determinar si el volumen está particionado.

      [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 101G 0 disk └─xvdf1 202:81 0 101G 0 part xvdg 202:96 0 30G 0 disk

      En el ejemplo anterior, /dev/xvda y /dev/xvdf son volúmenes particionados, mientras que /dev/xvdg no lo es. Si el volumen está particionado, monte la partición (/dev/xvdf1) en lugar del dispositivo tal cual (/dev/xvdf) en los siguientes pasos.

    2. Cree un directorio temporal para montar el volumen.

      [ec2-user ~]$ sudo mkdir /mnt/tempvol
    3. Monte el volumen (o la partición) en el punto de montaje temporal utilizando el nombre del volumen o el nombre de dispositivo que identificó anteriormente. El comando requerido depende del sistema de archivos de su sistema operativo. Tenga en cuenta que el nombre de dispositivo puede aparecer de forma diferente en la instancia. Consulte note en el paso 6 para más información.

      • Amazon Linux, Ubuntu y Debian

        [ec2-user ~]$ sudo mount /dev/xvdf1 /mnt/tempvol
      • Amazon Linux 2, CentOS, SUSE Linux 12 y RHEL 7.x

        [ec2-user ~]$ sudo mount -o nouuid /dev/xvdf1 /mnt/tempvol
    nota

    Si recibe un error que indica que el sistema de archivos está corrupto, ejecute el comando siguiente para usar la utilidad fsck para comprobar el sistema de archivos y reparar cualquier problema:

    [ec2-user ~]$ sudo fsck /dev/xvdf1
  3. Desde la instancia temporal, utilice el siguiente comando para actualizar authorized_keys en el volumen montado con la nueva clave pública de authorized_keys para la instancia temporal.

    importante

    Los ejemplos siguientes utilizan el nombre de usuario de Amazon Linux ec2-user. Es posible que necesite sustituirlo por un nombre de usuario diferente, como ubuntu para las instancias de Ubuntu.

    [ec2-user ~]$ cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

    Si esta copia funciona correctamente, puede proceder al paso siguiente.

    (Opcional) De lo contrario, si no tiene permiso para editar archivos en /mnt/tempvol, debe actualizar el archivo mediante el comando sudo y, a continuación, comprobar los permisos del archivo para asegurarse de que podrá iniciar sesión en la instancia original. Use el siguiente comando para comprobar los permisos del archivo.

    [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh total 4 -rw------- 1 222 500 398 Sep 13 22:54 authorized_keys

    En el resultado de este ejemplo, 222 es el ID de usuario y 500 es el ID de grupo. A continuación, utilice el comando sudo para volver a ejecutar el comando de copia que produjo un error.

    [ec2-user ~]$ sudo cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

    Ejecute el siguiente comando de nuevo para determinar si los permisos han cambiado.

    [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh

    Si el ID de usuario y el ID de grupo han cambiado, use el siguiente comando para restaurarlos.

    [ec2-user ~]$ sudo chown 222:500 /mnt/tempvol/home/ec2-user/.ssh/authorized_keys

Paso 7: Desmontar y desconectar el volumen original de la instancia temporal y volver a asociarlo a la instancia original

  1. Desde la instancia temporal, desmonte el volumen que adjuntó para que pueda volver a adjuntarlo a la instancia original. Por ejemplo, utilice el siguiente comando para desmontar el volumen en /mnt/tempvol.

    [ec2-user ~]$ sudo umount /mnt/tempvol
  2. Desconecte el volumen de la instancia temporal (lo desmontó en el paso anterior): en la consola de Amazon EC2 elija Volumes (Volúmenes) en el panel de navegación, seleccione el volumen del dispositivo raíz de la instancia original (tomó nota del ID del volumen en un paso anterior), elija Actions (Acciones), Detach volume (Desconectar volumen) y, luego, Detach (Desconectar). Espere a que el estado del volumen cambie a available. (Es posible que necesite seleccionar el icono Refresh (Actualizar)).

  3. Vuelva a conectar el volumen a la instancia original: con el volumen seleccionado, elija Actions (Acciones), Attach Volume (Adjuntar volumen). Seleccione el ID de la instancia original, especifique el nombre de dispositivo que anotó anteriormente en el paso 2 para el adjunto del dispositivo raíz original (/dev/sda1 o /dev/xvda) y, a continuación, elija Attach volume (Adjuntar volumen).

    importante

    Si no especifica el mismo nombre de dispositivo que el de la asociación original, no podrá comenzar la instancia original. Amazon EC2 espera que el volumen de dispositivo raíz sea sda1 o /dev/xvda.

Paso 8: Conectarse a la instancia original utilizando el nuevo par de claves

Seleccione la instancia original y elija Instance state (Estado de la instancia) y Start instance (Iniciar instancia). Cuando la instancia pase a estado running, puede conectarse a ella utilizando el archivo de clave privada para su nuevo par de claves.

nota

Si el nombre de su nuevo par de claves y del archivo de clave privada correspondiente es diferente al del par de claves original, asegúrese de especificar el nombre del nuevo archivo de clave privada al conectarse a la instancia.

Paso 9: Limpieza

(Opcional) Puede terminar la instancia temporal cuando no vaya a utilizarla más. Seleccione la instancia temporal y elija Instance state (Estado de la instancia) y Terminate instance (Terminar instancia).