Configurar OS Login para que requiera certificados SSH en las conexiones SSH


Las VMs que admiten certificados de inicio de sesión del SO admiten conexiones de claves SSH y certificados SSH. Los certificados SSH son claves SSH que han sido firmadas por otra clave de confianza. En este caso, se trata de una autoridad de certificación que gestiona OS Login. En este documento se describe cómo configurar máquinas virtuales con inicio de sesión del SO para que requieran certificados SSH en las conexiones SSH y cómo bloquear las conexiones de claves SSH sin firmar.

Cuando configuras el inicio de sesión del SO para que se requieran certificados SSH para conectarse a las VMs, solo se permite la conexión a las VMs con certificados SSH que hayan sido firmados por la autoridad de certificación. Las conexiones con claves SSH sin firmar se rechazan. Los certificados SSH tienen una validez de cinco minutos, tras los cuales ya no se pueden usar para conectarse a las VMs y se debe generar un nuevo certificado.

Te recomendamos que configures el inicio de sesión del SO para que se requieran certificados SSH para las conexiones SSH, lo que añade una capa de seguridad adicional contra usuarios malintencionados. Los certificados SSH tienen una duración breve 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 Workforce, consulta el artículo Usar la federación de identidades de Workforce con el inicio de sesión en SO para saber cómo habilitar los certificados SSH en tu organización.

Antes de empezar

Limitaciones

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

Requerir certificados SSH

Puedes configurar OS Login para que requiera certificados SSH en todas las conexiones SSH a las VMs de OS Login de tu proyecto o en VMs concretas. Después de configurar el inicio de sesión del SO para que requiera certificados SSH, las conexiones SSH desde la Google Cloud consola y la CLI de gcloud usarán certificados SSH de forma predeterminada. Si no quieres configurar el inicio de sesión del SO para que requiera certificados, pero quieres usar certificados para conectarte a las VMs, debes conectarte mediante herramientas de terceros, tal como se describe en la sección Conectarse a una VM mediante un certificado SSH.

Requerir certificados SSH para todas las VMs de un proyecto que tengan habilitado OS Login

Para requerir certificados SSH para todas las conexiones a todas las VMs que usen Inicio de sesión del SO en tu proyecto, usa la Google Cloud consola o la CLI de gcloud.

Consola

Para requerir certificados SSH en todas las conexiones a las VMs con OS Login habilitado, usa la consola para definir enable-oslogin y TRUE en los metadatos del proyecto: Google Cloud enable-oslogin-certificates

  1. Ve a la página Metadatos.

    Ir a Metadatos

  2. Haz clic en Editar.

  3. Haz clic en Añadir elemento.

    1. En el campo Key (Clave), introduce enable-oslogin.
    2. En el campo Valor, introduce TRUE.
  4. Haz clic en Añadir elemento.

    1. En el campo Key (Clave), introduce enable-oslogin-certificates.
    2. En el campo Valor, introduce TRUE.
  5. Haz clic en Guardar.

gcloud

Para requerir certificados SSH en todas las conexiones a las máquinas virtuales con OS Login habilitado, usa el comando gcloud compute project-info add-metadata para definir 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

Requerir certificados SSH en una sola VM con OS Login habilitado

Para requerir certificados para todas las conexiones SSH a una sola VM que use OS Login, utiliza la consola Google Cloud o la CLI de gcloud.

Consola

Para requerir certificados SSH para todas las conexiones a una sola máquina virtual, usa la consolaGoogle Cloud para definir enable-oslogin y enable-oslogin-certificates como 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 quieras requerir certificados SSH.

  3. Haz clic en Editar.

  4. En la sección Metadatos, haz clic en Añadir elemento.

    1. En el campo Key (Clave), introduce enable-oslogin.
    2. En el campo Valor, introduce TRUE.
  5. Haz clic en Añadir elemento.

    1. En el campo Key (Clave), introduce enable-oslogin-certificates.
    2. En el campo Valor, introduce TRUE.
  6. Haz clic en Guardar.

gcloud

Para requerir certificados SSH para todas las conexiones a una sola VM, usa el comando gcloud compute instances add-metadata para definir 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

Sustituye VM_NAME por el nombre de tu VM.

Conectarse a una VM mediante un certificado SSH

Después de configurar el inicio de sesión del SO para que requiera certificados SSH, las conexiones SSH desde la consola y la CLI de gcloud usarán certificados SSH de forma predeterminada. Google Cloud Si no quieres configurar el inicio de sesión del SO para que requiera certificados, pero quieres usar certificados para conectarte a las VMs, debes conectarte mediante herramientas de terceros.

Consola

Conéctate a las VMs mediante SSH en el navegador desde laGoogle Cloud consola. Para ello, 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 mediante un certificado:

gcloud beta compute ssh VM_NAME

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

Herramientas de terceros

Para usar un certificado SSH con un cliente SSH de terceros, sigue estos pasos:

  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"
    }
    

    Haz los cambios siguientes:

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

  4. Define los permisos del archivo de certificado SSH ejecutando el siguiente comando:

    sudo chmod 600 FILE_NAME
    

    Sustituye FILE_NAME por el nombre del archivo.

  5. Conéctate a la máquina virtual con el siguiente comando:

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

    Haz los cambios siguientes:

    • PATH_TO_PRIVATE_KEY: la ruta a tu archivo de clave privada SSH.
    • PATH_TO_SSH_CERTIFICATE: la ruta al archivo de certificado SSH.
    • USERNAME: tu nombre de usuario de OS Login
    • EXTERNAL_IP: la dirección IP externa de la VM.

Solución de problemas

Si no puedes conectarte a las VMs que has configurado para que requieran certificados SSH, puede deberse a lo siguiente:

Siguientes pasos