Conéctate a VMs de Linux mediante Identity-Aware Proxy

En este documento, se describe cómo conectarse a una instancia de máquina virtual (VM) a través de su dirección IP interna mediante el reenvío de TCP de Identity-Aware Proxy (IAP).

El reenvío de TCP de IAP te permite establecer un túnel encriptado sobre el cual puedes reenviar conexiones SSH a las VMs. Cuando te conectas a una VM que usa IAP, IAP envuelve la conexión SSH dentro de HTTPS antes de reenviar la conexión a la VM. Luego, IAP verifica si tienes los permisos de IAM necesarios y, si es así, otorga acceso a la VM.

Si necesitas conectarte a una VM que no tiene direcciones IP externas y no puedes usar IAP, revisa los demás métodos que se mencionan en Opciones de conexión para VM de uso interno exclusivo.

Antes de comenzar

  • Crea una regla de firewall para habilitar las conexiones desde IAP.
  • Si aún no lo hiciste, configura la autenticación. La autenticación verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Selecciona la pestaña según cómo planeas usar las muestras de esta página:

    Console

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud , no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI con el siguiente comando:

      gcloud init
  • Configura una región y una zona predeterminadas.

Sistemas operativos compatibles

Estos métodos de conexión son compatibles con todas las imágenes públicas de Linux que están disponibles en Compute Engine. Para imágenes de Fedora CoreOS, debes configurar el acceso SSH antes de poder usar estos métodos.

Conéctate a las VM

Para conectarte a una VM, completa los pasos en una de las siguientes pestañas.

Console

Para establecer un túnel de conexiones SSH a través de la dirección IP interna de una VM mediante SSH en el navegador, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. En la lista de instancias de máquina virtual, haz clic en SSH en la fila de la instancia a la que deseas conectarte.

gcloud

Crea un túnel de las conexiones SSH a través de la dirección IP interna de una VM con el comando gcloud compute ssh con la marca --tunnel-through-iap:

    En la consola de Google Cloud , activa Cloud Shell.

    Activa Cloud Shell

    En la parte inferior de la consola de Google Cloud , se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.

  1. Conéctate a la VM mediante la ejecución del siguiente comando:

    gcloud compute ssh INSTANCE_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --tunnel-through-iap

    Reemplaza lo siguiente:

    • INSTANCE_NAME: el nombre de la VM a la que deseas conectarte.
    • PROJECT_ID: Es el ID del proyecto que contiene la VM.
    • ZONE: Es el nombre de la zona en la que se encuentra la VM.

IAP Desktop

Para conectarte a una VM mediante IAP Desktop, haz lo siguiente:

  1. Instala IAP Desktop en tu estación de trabajo si aún no lo haces.

  2. Abre IAP Desktop. Se abrirá la ventana Agregar proyectos.

  3. Cuando se te solicite, accede con la Cuenta de Google que tiene acceso al proyecto con las VMs a las que deseas conectarte.

  4. En la ventana Agregar proyectos, ingresa el nombre o el ID del proyecto que contiene las VMs a las que deseas conectarte.

  5. En la ventana Explorador de proyectos, haz clic con el botón derecho en el nombre de la VM y selecciona Conectar para conectarte a la VM.

Clientes OpenSSH

Conectarte a una VM que no tiene una dirección IP externa con SSH a través de un túnel de IAP Puedes escribir tu propio archivo de configuración de SSH (~/.ssh/config) para que herramientas como VS Code o un cliente de OpenSSH puedan conectarse directamente.

  1. Genera y propaga tus claves SSH conectándote a tu VM al menos una vez con la ejecución del comando gcloud compute ssh:

    gcloud compute ssh INSTANCE_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --tunnel-through-iap

    Reemplaza lo siguiente:

    • INSTANCE_NAME: el nombre de la VM a la que deseas conectarte.
    • PROJECT_ID: Es el ID del proyecto que contiene la VM.
    • ZONE: Es la zona en la que se encuentra la VM.

    Después de que la conexión se realice correctamente, sal de la sesión de SSH.

  2. Abre o crea el archivo de configuración de SSH en tu estación de trabajo local. Por lo general, este archivo se encuentra en ~/.ssh/config en Linux y macOS, o en %USERPROFILE%\.ssh\config en Windows.

  3. Agrega una entrada de configuración para tu VM con el siguiente bloque en tu archivo de configuración de SSH:

    Host INSTANCE_NAME
        HostName INSTANCE_NAME
        IdentityFile PATH_TO_PRIVATE_KEY
        ProxyCommand gcloud compute start-iap-tunnel %h %p --listen-on-stdin --project=PROJECT_ID --zone=ZONE --verbosity=warning
        User USERNAME

    Reemplaza lo siguiente:

    • INSTANCE_NAME: el nombre de la VM a la que deseas conectarte.
    • PATH_TO_PRIVATE_KEY: Es la ruta de acceso a tu archivo de clave privada, por lo general, ~/.ssh/google_compute_engine.
    • PROJECT_ID: Es el ID del proyecto que contiene la VM.
    • ZONE: Es la zona en la que se encuentra la VM.
    • USERNAME: Es el nombre de usuario en la VM, como tu nombre de usuario de Acceso al SO de Google Cloud o el nombre de usuario de los metadatos.
  4. Conéctate a la VM desde tu terminal local o cliente SSH ejecutando el siguiente comando:

    ssh INSTANCE_NAME

App de PuTTY

Para establecer un túnel de conexiones SSH a través de la dirección IP interna de una VM con PuTTY, haz lo siguiente:

  1. Si aún no agregaste una clave SSH, agrega una a la VM.
  2. Si tu estación de trabajo no tiene instalada la app de PuTTY, descarga los archivos de paquete de PuTTY.
  3. En la consola de Google Cloud , ve a la página Instancias de VM y busca el nombre de la VM a la que deseas conectarte.

    Ir a Instancias de VM

  4. Abre la app de PuTTY. Se abrirá una ventana de configuración de conexión.
  5. En el campo Nombre de host (o dirección IP), ingresa el nombre de usuario asociado con la clave SSH y el nombre de la VM a la que deseas conectarte. Usa el siguiente formato:

    USERNAME@INSTANCE_NAME

    Reemplaza lo siguiente:

    • USERNAME: el nombre de usuario es el que especificaste cuando creaste la clave SSH.
    • INSTANCE_NAME: el nombre de la VM.
  6. En el menú Categoría, ve a Conexión > SSH > Auth > Credenciales (o Conexión > SSH > Auth en versiones de PuTTY anteriores a la 0.78).
  7. En el campo Archivo de claves privadas para la autenticación, haz clic en Explorar y selecciona el archivo de clave SSH privada (.ppk) que corresponde a la clave pública que agregaste a la VM.
  8. En el menú Categoría, ve a Conexión > Proxy.
  9. En la sección Tipo de proxy, elige Local.
  10. En el campo Comando de Telnet o comando de proxy local, ingresa el siguiente comando:

    gcloud.cmd compute start-iap-tunnel INSTANCE_NAME PORT_NUMBER --listen-on-stdin --project=PROJECT_ID --zone=ZONE

    Reemplaza lo siguiente:

    • INSTANCE_NAME: el nombre de la VM a la que deseas conectarte.
    • PORT_NUMBER: Es el puerto en el que se ejecuta el daemon sshd. El valor predeterminado de PORT_NUMBER es 22.
    • PROJECT_ID: el proyecto que aloja la VM a la que deseas conectarte.
    • ZONE: Es la zona en la que se encuentra la VM.
  11. Haz clic en Abrir para conectarte a la VM.

Soluciona problemas

Si deseas encontrar métodos para diagnosticar y resolver conexiones SSH fallidas, consulta Soluciona problemas de SSH.

¿Qué sigue?