Configura el acceso al SO para que requiera certificados SSH para las conexiones SSH


Las VMs que admiten certificados de Acceso al SO admiten conexiones desde claves y certificados SSH. Los certificados SSH son claves SSH que firmó otra clave de confianza, en este caso, una autoridad certificadora que administra el acceso al SO. En este documento, se describe cómo configurar VMs con Acceso a SO para que requieran certificados SSH para las conexiones SSH y bloqueen las conexiones de claves SSH sin firmar.

Cuando configuras el Acceso al SO para que requiera certificados SSH para las conexiones a las VMs, solo se permiten los certificados SSH firmados por la autoridad certificadora para conectarse a las VMs. Se rechazan las conexiones de las claves SSH sin firmar. Los certificados SSH tienen una fecha de vencimiento de cinco minutos, después de la cual ya no se pueden usar para conectarse a las VMs y se debe generar un certificado nuevo.

Recomendamos configurar el Acceso al SO para que requiera certificados SSH para las conexiones SSH como una capa adicional de seguridad contra usuarios maliciosos. Los certificados SSH son de corta duración y solo son válidos para una VM específica, lo que significa que, si se vulneran, su superficie de ataque es significativamente menor y su ventana de ataque es significativamente más corta que la de las claves SSH de larga duración.

Si tu organización usa la federación de identidades de personal, consulta Usa la federación de identidades de personal con el Acceso al SO para obtener información sobre cómo habilitar los certificados SSH para tu organización.

Antes de comenzar

  • Configura el Acceso al SO y asigna roles de IAM de Acceso al SO.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se 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:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.

Limitaciones

  • La VM a la que te conectas debe tener OpenSSH 7.4 o una versión posterior para usar certificados SSH.

Exige certificados SSH

Puedes configurar el Acceso al SO para que requiera certificados SSH para todas las conexiones SSH a las VMs con Acceso al SO en tu proyecto o para VMs individuales. Después de configurar el Acceso al SO para que requiera certificados SSH, las conexiones SSH desde la consola de Google Cloud y gcloud CLI usan certificados SSH de forma predeterminada. Si no deseas configurar el Acceso al SO para que requiera certificados, pero quieres usar certificados para conectarte a las VMs, debes conectarte con herramientas de terceros, como se describe en la sección Conéctate a una VM con un certificado SSH.

Exige certificados SSH para todas las VMs que tienen habilitado el Acceso al SO en un proyecto

Para requerir certificados SSH para todas las conexiones a todas las VMs que usan el Acceso al SO en tu proyecto, usa la consola de Google Cloud o gcloud CLI.

Console

Para requerir certificados SSH para todas las conexiones a las VMs que tienen habilitado el Acceso al SO, usa la consola de Google Cloud para establecer enable-oslogin y enable-oslogin-certificates en TRUE en los metadatos del proyecto:

  1. Ve a la página Metadatos.

    Ir a metadatos

  2. Haz clic en Editar.

  3. Haz clic en Agregar elemento.

    1. En el campo Clave, ingresa enable-oslogin.
    2. En el campo Valor, ingresa TRUE.
  4. Haz clic en Agregar elemento.

    1. En el campo Clave, ingresa enable-oslogin-certificates.
    2. En el campo Valor, ingresa TRUE.
  5. Haz clic en Guardar.

gcloud

Para requerir certificados SSH para todas las conexiones a las VMs que tienen habilitado el Acceso al SO, usa el comando gcloud compute project-info add-metadata para configurar enable-oslogin=TRUE y enable-oslogin-certificates=TRUE en los metadatos del proyecto:

gcloud compute project-info add-metadata \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Cómo exigir certificados SSH en una sola VM que tenga habilitado el Acceso al SO

Para requerir certificados para todas las conexiones SSH a una sola VM que usa el Acceso al SO, usa la consola de Google Cloud o gcloud CLI.

Console

Para exigir certificados SSH para todas las conexiones a una sola VM, usa la consola deGoogle Cloud para establecer enable-oslogin y enable-oslogin-certificates en TRUE en los metadatos de la instancia:

  1. Ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Haz clic en el nombre de la VM para la que deseas solicitar certificados SSH.

  3. Haz clic en Editar.

  4. En la sección Metadatos, haz clic en Agregar elemento.

    1. En el campo Clave, ingresa enable-oslogin.
    2. En el campo Valor, ingresa TRUE.
  5. Haz clic en Agregar elemento.

    1. En el campo Clave, ingresa enable-oslogin-certificates.
    2. En el campo Valor, ingresa TRUE.
  6. Haz clic en Guardar.

gcloud

Para exigir certificados SSH para todas las conexiones a una sola VM, usa el comando gcloud compute instances add-metadata para configurar enable-oslogin=TRUE y enable-oslogin-certificates=TRUE en los metadatos de la instancia:

gcloud compute instances add-metadata VM_NAME \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Reemplaza VM_NAME por el nombre de tu VM.

Conéctate a una VM con un certificado SSH

Después de configurar el Acceso al SO para que requiera certificados SSH, las conexiones SSH desde la consola Google Cloud y gcloud CLI usan certificados SSH de forma predeterminada. Si no quieres configurar el Acceso al SO para que requiera certificados, pero quieres usar certificados para conectarte a las VMs, debes conectarte con herramientas de terceros.

Console

Para conectarte a las VMs con SSH en el navegador desde la consola deGoogle Cloud , haz lo siguiente:

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

    SSH button next to instance name.

gcloud

Usa el comando gcloud beta compute ssh para conectarte a una VM con un certificado:

gcloud beta compute ssh VM_NAME

Reemplaza VM_NAME por el nombre de la VM a la que deseas conectarte.

Herramientas de terceros

Para usar un certificado SSH con un cliente SSH externo, haz lo siguiente:

  1. Crea una clave SSH si aún no tienes una.

  2. Firma tu clave SSH pública con el método projects.locations.signSshPublicKey:

    POST https://oslogin.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
     "compute_instance": "COMPUTE_INSTANCE",
     "service_account": "SERVICE_ACCOUNT"
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto que contiene la VM a la que deseas conectarte
    • LOCATION: La región en la que se encuentra la VM a la que deseas conectarte
    • PUBLIC_KEY: el contenido de tu archivo de clave pública SSH
    • COMPUTE_INSTANCE: Es la instancia de Compute Engine a la que se conectará, en el formato projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID.
    • SERVICE_ACCOUNT: Es la cuenta de servicio adjunta a la instancia. Borra este campo si la instancia no tiene una cuenta de servicio adjunta.
  3. Copia el certificado SSH del resultado del método projects.locations.signSshPublicKey y guarda el contenido en un archivo nuevo.

  4. Ejecuta el siguiente comando para configurar los permisos en el archivo del certificado SSH:

    sudo chmod 600 FILE_NAME
    

    Reemplaza FILE_NAME por el nombre del archivo.

  5. Conéctate a la VM con el siguiente comando:

    ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
    

    Reemplaza lo siguiente:

    • PATH_TO_PRIVATE_KEY: Es la ruta de acceso al archivo de clave SSH privada.
    • PATH_TO_SSH_CERTIFICATE: la ruta de acceso al archivo del certificado SSH.
    • USERNAME: Tu nombre de usuario de Acceso al SO
    • EXTERNAL_IP: la dirección IP externa de la VM.

Soluciona problemas

Si no puedes conectarte a las VMs que configuraste para que requieran certificados SSH, es posible que se deba a lo siguiente:

Próximos pasos