Conectarse a máquinas virtuales Linux mediante un host bastion


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 una VM host bastion. Los hosts bastion proporcionan un punto de entrada externo a una red de nube privada virtual (VPC) que contiene máquinas virtuales que no tienen direcciones IP externas. Cuando uses una pasarela de aplicaciones, conéctate primero a ella y, después, a la VM de destino.

Conectarse a una VM mediante su dirección IP interna es útil si la VM no tiene una dirección IP externa. Si la VM tiene una dirección IP externa, conéctate a ella mediante su dirección IP externa. Si necesitas conectarte a una VM que no tiene direcciones IP externas y no puedes usar un host bastion, consulta los otros métodos que se indican en Opciones de conexión para VMs solo internas.

Sistemas operativos compatibles

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

Crear una VM de host bastion

Crea una VM de Compute Engine en la red interna del clúster privado para que actúe como host bastion que pueda gestionar el clúster.

Consola

Para crear una VM de host bastion, haz lo siguiente:

  1. En la Google Cloud consola, ve a la página Crear una instancia.

    Ir a Crear una instancia

    1. Especifica los siguientes detalles de la VM:
    • Nombre: el nombre de tu VM.
    • Tipo de máquina: un tipo de máquina. Elige un tipo de máquina pequeño, como e2-micro.
    • Disco de arranque Sistema operativo: cualquier SO Linux.
  2. Despliega la sección Opciones avanzadas y haz lo siguiente:

    1. En la sección Interfaces de red, selecciona la misma red VPC y subred que la VM de destino.

    2. En Dirección IPv4 externa, selecciona Efímera.

  3. Para crear e iniciar la VM, haz clic en Crear.

gcloud

Crea una VM de host bastion con el comando gcloud compute instances create:

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para crear la VM de host bastión, ejecuta el siguiente comando:

    gcloud compute instances create VM_NAME \
      --zone=ZONE \
      --machine-type=e2-micro \
      --image-family=IMAGE_FAMILY \
      --image-project=IMAGE_PROJECT \
      --network-interface=subnet=SUBNET,address=""
    

    Haz los cambios siguientes:

    • VM_NAME: el nombre de la VM.
    • ZONE: la zona de la VM.
    • IMAGE_FAMILY: una familia de imágenes de Linux.
    • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen.
    • SUBNET: la misma subred de VPC que la VM de destino. Si usas la VPC predeterminada, el valor de SUBNET es default.

Conectarse a máquinas virtuales

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

gcloud

Para conectarte a una VM mediante SSH a través de un host bastion, ejecuta el comando gcloud compute ssh:

  1. Conéctate a la máquina virtual del host bastion ejecutando el siguiente comando:

    gcloud compute ssh BASTION_NAME

    Sustituye BASTION_NAME por el nombre de la VM del host bastion.

  2. Desde la máquina virtual del host bastion, conéctate a la máquina virtual principal a través de su dirección IP interna mediante la marca --internal-ip:

    gcloud compute ssh VM_NAME \
        --internal-ip

    Sustituye VM_NAME por el nombre de la VM a la que quieras conectarte.

Clientes de OpenSSH

Para conectarte a una VM a través de un host bastion desde un cliente OpenSSH, haz lo siguiente:

  1. Añade una clave SSH a la VM si aún no lo has hecho.
  2. En la Google Cloud consola, ve a la página Instancias de VM y busca la dirección IP externa de la VM del host bastion.

    Ir a Instancias de VM

  3. Abre un terminal en tu estación de trabajo.
  4. Conéctate a la máquina virtual del host bastion ejecutando el siguiente comando:

    ssh -A -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP

    Haz los cambios siguientes:

    • PATH_TO_PRIVATE_KEY: la ruta al archivo de clave SSH privada que corresponde a la clave pública que has añadido a la VM.
    • USERNAME: tu nombre de usuario. Si gestionas tus claves SSH en los metadatos, el nombre de usuario es el que especificaste cuando creaste la clave SSH. En el caso de las cuentas de inicio de sesión en el SO, el nombre de usuario se define en tu perfil de Google. Por ejemplo, cloudysanfrancisco_example_com o cloudysanfrancisco.
    • EXTERNAL_IP: la dirección IP externa de la VM.
  5. Desde la máquina virtual de host bastion, conéctate a través de la dirección IP interna de una máquina virtual con el siguiente comando:

    ssh USERNAME@INTERNAL_IP

    Haz los cambios siguientes:

    • USERNAME: tu nombre de usuario. Si gestionas tus claves SSH en los metadatos, el nombre de usuario es el que especificaste cuando creaste la clave SSH. En el caso de las cuentas de inicio de sesión en el SO, el nombre de usuario se define en tu perfil de Google. Por ejemplo, cloudysanfrancisco_example_com o cloudysanfrancisco.
    • INTERNAL_IP: la dirección IP interna de la VM.

Aplicación PuTTY

Para conectarte a una VM a través de un host bastion con PuTTY, haz lo siguiente:

  1. Añade una clave SSH a la VM del host bastion si aún no lo has hecho.
  2. Si tu estación de trabajo aún no tiene instalada la aplicación PuTTY, descarga los archivos del paquete PuTTY.
  3. En la Google Cloud consola, ve a la página Instancias de VM y busca la dirección IP interna de la VM a la que quieras conectarte.

    Ir a Instancias de VM

  4. Abre la aplicación PuTTY. Se abrirá una ventana de configuración de conexión.
  5. En el campo Host Name, introduce el nombre de usuario asociado a la clave SSH y la dirección IP externa de la VM a la que quieras conectarte. Utiliza el siguiente formato:

    USERNAME@EXTERNAL_IP

    Haz los cambios siguientes:

    • USERNAME: tu nombre de usuario. Si gestionas tus claves SSH en los metadatos, el nombre de usuario es el que especificaste cuando creaste la clave SSH. En el caso de las cuentas de inicio de sesión en el SO, el nombre de usuario se define en tu perfil de Google. Por ejemplo, cloudysanfrancisco_example_com o cloudysanfrancisco.
    • EXTERNAL_IP: la dirección IP externa de la VM.
  6. En el menú Categoría, vaya a Conexión > SSH > Autenticación.
  7. En el campo Archivo de clave privada para la autenticación, selecciona el archivo de clave SSH privada que corresponda a la clave pública que has añadido a la VM.
  8. En la sección Parámetros de autenticación, selecciona Permitir reenvío de agente.
  9. Haz clic en Abrir para conectarte a la VM del host bastion.
  10. Desde la máquina virtual de host bastion, conéctate a través de la dirección IP interna de una máquina virtual con el siguiente comando:

    ssh USERNAME@INTERNAL_IP

    Haz los cambios siguientes:

    • USERNAME: tu nombre de usuario. Si gestionas tus claves SSH en los metadatos, el nombre de usuario es el que especificaste cuando creaste la clave SSH. En el caso de las cuentas de inicio de sesión en el SO, el nombre de usuario se define en tu perfil de Google. Por ejemplo, cloudysanfrancisco_example_com o cloudysanfrancisco.
    • INTERNAL_IP: la dirección IP interna de la VM.

Solución de problemas

Para consultar métodos para diagnosticar y resolver conexiones SSH fallidas, consulta Solución de problemas de SSH.

Siguientes pasos