Agregar claves SSH a las máquinas virtuales


Este documento describe cómo agregar claves SSH a instancias de máquinas virtuales (VM) que usan inicio de sesión en el sistema operativo y máquinas virtuales que usan claves SSH basadas en metadatos . Si usted o el administrador de su organización no han habilitado el inicio de sesión en el sistema operativo, sus máquinas virtuales utilizan claves SSH basadas en metadatos.

Antes de comenzar

  • Para obtener información sobre cómo administrar el acceso a tus VM de Compute Engine, consulta Elegir un método de acceso .
  • Si aún no lo ha hecho, cree un par de claves SSH .
  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. 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.
    3. Terraform

      Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

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

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

      Para obtener más información, consulta Set up authentication for a local development environment.

      REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

        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.

      Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Agregar claves a las máquinas virtuales que utilizan el inicio de sesión del sistema operativo

Las máquinas virtuales que utilizan el inicio de sesión en el sistema operativo aceptan claves SSH asociadas con su cuenta de Google. Puedes asociar una clave SSH pública con tu cuenta de Google usando la CLI de gcloud o usando la API de inicio de sesión del sistema operativo. Si es administrador de su organización, puede agregar claves SSH a cuentas de usuario mediante Directory API .

Cuando agregas claves SSH a tu cuenta de Google, Compute Engine genera un nombre de usuario combinando el nombre de usuario y el dominio del correo electrónico asociado con tu cuenta de Google. Por ejemplo, si su dirección de correo electrónico es cloudysanfrancisco@gmail.com , su nombre de usuario es cloudysanfrancisco_gmail_com . Si agrega una clave SSH en un proyecto que está fuera de su organización, su nombre de usuario tiene el prefijo ext_ , por ejemplo, ext_cloudysanfrancisco_gmail_com . El administrador de su organización puede personalizar su nombre de usuario utilizando Directory API . Si ya tienes un nombre de usuario configurado, Compute Engine usa ese nombre de usuario cuando agregas claves SSH.

nube de gcloud

  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 agregar una clave SSH pública a tu cuenta, usa el comando gcloud compute os-login ssh-keys add :

    gcloud compute os-login ssh-keys add \
       --key-file=KEY_FILE_PATH \
       --project=PROJECT \
       --ttl=EXPIRE_TIME
    

    Reemplace lo siguiente:

    • KEY_FILE_PATH : la ruta a la clave SSH pública en su estación de trabajo. La clave debe utilizar el formato public-openssh
    • PROJECT : Opcional: un proyecto en el que desea utilizar su clave SSH. Especifica este campo para usar tu clave SSH en un proyecto fuera de tu organización o si no eres miembro de una organización de Cloud Identity.
    • EXPIRE_TIME : Opcional: el tiempo de vencimiento de la clave SSH

      Por ejemplo, si especifica 30m la clave SSH caduca después de 30 minutos.

      Esta bandera utiliza las siguientes unidades:

      • s por segundos
      • m por minutos
      • h por horas
      • d por días

Terraformar

Para agregar una clave SSH pública a su cuenta, use el recurso google_client_openid_userinfo junto con el recurso google_os_login_ssh_public_key .

data "google_client_openid_userinfo" "me" {
}

resource "google_os_login_ssh_public_key" "default" {
  user = data.google_client_openid_userinfo.me.email
  key  = file("id_rsa.pub") # path/to/ssl/id_rsa.pub
}

DESCANSAR

Para agregar una clave SSH pública a su cuenta, utilice el método users.importSshPublicKey de la API de inicio de sesión del sistema operativo:

POST https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL:importSshPublicKey

{
 "key": "SSH_KEY",
 "expirationTimeUsec": "EXPIRATION_TIMESTAMP"
}

Reemplace lo siguiente:

  • ACCOUNT_EMAIL : la dirección de correo electrónico asociada a tu cuenta
  • SSH_KEY : la clave pública que desea agregar a la cuenta
  • EXPIRATION_TIMESTAMP : el tiempo de vencimiento de la clave, en microsegundos desde la época (1 segundo = 10 6 microsegundos)

Agregue claves SSH a máquinas virtuales que usan claves SSH basadas en metadatos

máquinas virtuales que no usan sistema operativoalmacenar claves SSH en el proyecto de Compute Engine y los metadatos de la instancia. Si el inicio de sesión en el sistema operativo está habilitado para una máquina virtual, el agente invitado de la máquina virtual ignora las claves almacenadas en los metadatos.

Puede utilizar claves SSH almacenadas en los metadatos del proyecto para acceder a todas las máquinas virtuales de un proyecto. Puede utilizar claves SSH almacenadas en metadatos de instancia para acceder a máquinas virtuales individuales.

Compute Engine no elimina automáticamente las claves SSH caducadas de los metadatos en el momento de su vencimiento, pero las claves caducadas no se pueden usar para establecer nuevas conexiones a las máquinas virtuales. Si desea eliminar claves caducadas de los metadatos, consulte Eliminar claves SSH de máquinas virtuales que usan claves basadas en metadatos .

Puedes agregar una clave SSH pública a los metadatos del proyecto o de la instancia de VM mediante la consola de Google Cloud, la CLI de gcloud o REST.

Agregar claves SSH a los metadatos del proyecto

Puede agregar una clave SSH pública a los metadatos del proyecto para acceder a todas las máquinas virtuales de un proyecto, excepto a las máquinas virtuales que bloquean las claves SSH de todo el proyecto. Para obtener más información sobre el bloqueo de claves SSH en todo el proyecto, consulte Bloquear claves SSH de máquinas virtuales que usan claves SSH basadas en metadatos .

Consola

Para agregar una clave SSH pública a los metadatos del proyecto usando la consola de Google Cloud, haga lo siguiente:

  1. En la consola de Google Cloud, vaya a la página Metadatos .

    Ir a Metadatos

  2. Haga clic en la pestaña Claves SSH .

  3. Haga clic en Editar .

  4. Haga clic en Agregar elemento .

  5. En el campo de clave SSH que se abre, agregue su clave SSH pública. La clave debe estar en uno de los siguientes formatos:

    • Formato para una clave sin tiempo de vencimiento:

      KEY_VALUE USERNAME
    • Formato para una clave con tiempo de vencimiento:

      KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

    Reemplace lo siguiente:

    • KEY_VALUE : el valor de la clave SSH pública
    • USERNAME : su nombre de usuario. Por ejemplo, cloudysanfrancisco o cloudysanfrancisco_gmail_com .

      Para las máquinas virtuales Linux, el USERNAME no puede ser root , a menos que configure su máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulte Conexión a máquinas virtuales Linux como usuario raíz .

      Para máquinas virtuales Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio AD, en el formato DOMAIN \ . Por ejemplo, el usuario cloudysanfrancisco dentro del AD ad.example.com tiene un USERNAME de example\cloudysanfrancisco .

    • EXPIRE_TIME : la hora en que caduca la clave, en formato ISO 8601 . Por ejemplo: 2021-12-04T20:12:00+0000
  6. Haga clic en Guardar .

nube de gcloud

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.

  1. Si hay claves SSH existentes en los metadatos del proyecto, debes volver a agregarlas a los metadatos del proyecto cada vez que agregues una nueva clave SSH mediante la CLI de gcloud. Si no vuelve a agregar las claves existentes, agregar una nueva clave borra las claves existentes.

    Para agregar una clave SSH pública a los metadatos del proyecto mediante la CLI de gcloud, haz lo siguiente:

    1. Si su proyecto ya tiene claves SSH públicas para todo el proyecto, consígalas de los metadatos y agréguelas a un archivo nuevo:

      1. Ejecuta el comando gcloud compute project-info describe para obtener las claves SSH para el proyecto:

        gcloud compute project-info describe \
         --format="value(commonInstanceMetadata[items][ssh-keys])"
        

        El resultado es similar al siguiente:

        username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
        
      2. Copie el valor de metadatos ssh-keys .

      3. Cree y abra un nuevo archivo de texto en su estación de trabajo.

      4. En el archivo, pegue la lista de claves que acaba de copiar.

      5. Agregue su nueva clave al final de la lista, en uno de los siguientes formatos:

        • Formato para una clave sin tiempo de vencimiento:

          USERNAME:KEY_VALUE
        • Formato para una clave con tiempo de vencimiento:

          USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

        Reemplace lo siguiente:

        • KEY_VALUE : el valor de la clave SSH pública
        • USERNAME : su nombre de usuario. Por ejemplo, cloudysanfrancisco o cloudysanfrancisco_gmail_com .

          Para las máquinas virtuales Linux, el USERNAME no puede ser root , a menos que configure su máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulte Conexión a instancias como usuario raíz .

          Para máquinas virtuales Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio AD, en el formato DOMAIN \ . Por ejemplo, el usuario cloudysanfrancisco dentro del AD ad.example.com tiene un USERNAME de example\cloudysanfrancisco .

        • EXPIRE_TIME : la hora en que caduca la clave, en formato ISO 8601 . Por ejemplo: 2021-12-04T20:12:00+0000
      6. Guarde y cierre el archivo.

    2. Ejecuta el comando gcloud compute project-info add-metadata para establecer el valor de ssh-keys para todo el proyecto:

      gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
      

      Reemplace KEY_FILE con uno de los siguientes:

      • La ruta al archivo que creó en el paso anterior, si el proyecto tenía claves SSH existentes.
      • La ruta a su nuevo archivo de clave SSH pública, si el proyecto no tenía claves SSH existentes

Terraformar

Para agregar una clave SSH pública a los metadatos de su proyecto, use el recurso google_compute_project_metadata .

resource "google_compute_project_metadata" "default" {
  metadata = {
    ssh-keys = <<EOF
      dev:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg6UtHDNyMNAh0GjaytsJdrUxjtLy3APXqZfNZhvCeT dev
      test:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg6UtHDNyMNAh0GjaytsJdrUxjtLy3APXqZfNZhvCeT test
    EOF
  }
}

DESCANSAR

Si existen claves SSH en los metadatos del proyecto, debes volver a agregarlas a los metadatos del proyecto cada vez que agregues una nueva clave SSH mediante la API de Compute Engine. Si no vuelve a agregar las claves existentes, agregar una nueva clave borra las claves existentes.

Para agregar una clave SSH pública a los metadatos del proyecto usando la API de Compute Engine, haga lo siguiente:

  1. Obtenga los valores de fingerprint y ssh-keys de los metadatos utilizando el método projects.get

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
    

    Reemplace PROJECT_ID con su ID de proyecto.

    La respuesta es similar a la siguiente:

    ...
    "fingerprint": "utgYE_XWtE8=",
    "items": [
    {
     "key": "ssh-keys",
     "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}"
    }
    ]
    ...
    
  2. Agregue el nuevo valor ssh-keys utilizando el método projects.setCommonInstanceMetadata .

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata
    
    {
    "items": [
     {
      "key": "ssh-keys",
      "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY"
     }
    ]
    "fingerprint": "FINGERPRINT"
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : ID de tu proyecto
    • EXISTING_SSH_KEYS : el valor de la clave ssh-keys de la respuesta de la solicitud projects.get
    • FINGERPRINT : el valor de la fingerprint de la respuesta de la solicitud de projects.get
    • NEW_SSH_KEY : la nueva clave SSH, en uno de los siguientes formatos:

      • Formato para una clave sin tiempo de vencimiento:

        USERNAME:KEY_VALUE
      • Formato para una clave con tiempo de vencimiento:

        USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

      Reemplace lo siguiente:

      • KEY_VALUE : el valor de la clave SSH pública
      • USERNAME : su nombre de usuario. Por ejemplo, cloudysanfrancisco o cloudysanfrancisco_gmail_com .

        Para las máquinas virtuales Linux, el USERNAME no puede ser root , a menos que configure su máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulte Conexión a instancias como usuario raíz .

        Para máquinas virtuales Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio AD, en el formato DOMAIN \ . Por ejemplo, el usuario cloudysanfrancisco dentro del AD ad.example.com tiene un USERNAME de example\cloudysanfrancisco .

      • EXPIRE_TIME : la hora en que caduca la clave, en formato ISO 8601 . Por ejemplo: 2021-12-04T20:12:00+0000

Agregar claves SSH a los metadatos de la instancia

Puede agregar una clave SSH pública a los metadatos de la instancia cuando crea una VM o después de crear una VM .

Agregue claves SSH a los metadatos de la instancia durante la creación de VM

Puedes agregar claves SSH a los metadatos de la instancia durante la creación de la VM mediante la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.

Consola

Para crear una instancia y agregar una clave SSH pública a los metadatos de la instancia al mismo tiempo usando la consola de Google Cloud, haga lo siguiente:

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

    Ir a Crear una instancia

  2. Para agregar una clave SSH pública a los metadatos de la instancia, haga lo siguiente:

    1. En el menú de navegación, haga clic en Seguridad .

    2. Expanda la sección Administrar acceso .

    3. Para deshabilitar el inicio de sesión en el sistema operativo, desmarque la casilla de verificación Controlar el acceso a la máquina virtual a través de permisos de IAM .

    4. Si desea permitir que las claves SSH públicas en los metadatos del proyecto accedan a la instancia, desmarque la casilla de verificación Bloquear claves SSH en todo el proyecto .

    5. En la sección Agregar claves SSH generadas manualmente , haga clic en Agregar elemento .

    6. Agregue su clave pública en el cuadro de texto. La clave debe estar en uno de los siguientes formatos:

      • Formato para una clave sin tiempo de vencimiento:

        KEY_VALUE USERNAME
      • Formato para una clave con tiempo de vencimiento:

        KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

      Reemplace lo siguiente:

      • KEY_VALUE : el valor de la clave SSH pública
      • USERNAME : su nombre de usuario. Por ejemplo, cloudysanfrancisco o cloudysanfrancisco_gmail_com .

        Para las máquinas virtuales Linux, el USERNAME no puede ser root , a menos que configure su máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulte Conexión a máquinas virtuales Linux como usuario raíz .

        Para máquinas virtuales Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio AD, en el formato DOMAIN \ . Por ejemplo, el usuario cloudysanfrancisco dentro del AD ad.example.com tiene un USERNAME de example\cloudysanfrancisco .

      • EXPIRE_TIME : la hora en que caduca la clave, en formato ISO 8601 . Por ejemplo: 2021-12-04T20:12:00+0000
  3. Opcional: especifique otras opciones de configuración. Para obtener más información, consulte Opciones de configuración durante la creación de instancias .

  4. Para crear e iniciar la instancia, haga clic en Crear .

nube de gcloud

  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 una máquina virtual y agregar una clave SSH pública a los metadatos de la instancia al mismo tiempo usando la CLI de gcloud, usa el comando gcloud compute instances create :

    gcloud compute instances create VM_NAME \
       --metadata=ssh-keys=PUBLIC_KEY
    

    Reemplace lo siguiente:

    • VM_NAME : el nombre de la nueva VM
    • PUBLIC_KEY : tu clave SSH pública, en uno de los siguientes formatos:

      • Formato para una clave sin tiempo de vencimiento:

        USERNAME:KEY_VALUE
      • Formato para una clave con tiempo de vencimiento:

        USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

      Reemplace lo siguiente:

      • KEY_VALUE : el valor de la clave SSH pública
      • USERNAME : su nombre de usuario. Por ejemplo, cloudysanfrancisco o cloudysanfrancisco_gmail_com .

        Para las máquinas virtuales Linux, el USERNAME no puede ser root , a menos que configure su máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulte Conexión a instancias como usuario raíz .

        Para máquinas virtuales Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio AD, en el formato DOMAIN \ . Por ejemplo, el usuario cloudysanfrancisco dentro del AD ad.example.com tiene un USERNAME de example\cloudysanfrancisco .

      • EXPIRE_TIME : la hora en que caduca la clave, en formato ISO 8601 . Por ejemplo: 2021-12-04T20:12:00+0000

    Puede agregar varias claves SSH utilizando el --metadata-from-file=ssh-keys= FILE_PATH . En el archivo, agregue una lista de nombres de usuario y claves SSH públicas en uno de los formatos anteriores.

Terraformar

Para agregar una clave SSH pública a los metadatos de su instancia, use el recurso google_compute_instance .

resource "google_compute_instance" "default" {
  name         = "my-vm"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-1404-trusty-v20160627"
    }
  }

  # Local SSD disk
  scratch_disk {
    interface = "SCSI"
  }

  network_interface {
    network = "default"
    access_config {}
  }
  metadata = {
    "ssh-keys" = <<EOT
      dev:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg6UtHDNyMNAh0GjaytsJdrUxjtLy3APXqZfNZhvCeT dev
      test:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILg6UtHDNyMNAh0GjaytsJdrUxjtLy3APXqZfNZhvCeT test
     EOT
  }
}

DESCANSAR

Para crear una VM y agregar una clave SSH pública a los metadatos de la instancia al mismo tiempo usando Compute Engine, cree una solicitud POST para el método instances.insert :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

Reemplace lo siguiente:

  • PROJECT_ID : el ID del proyecto
  • ZONE : la zona de la VM

En el cuerpo de la solicitud, proporcione nombres de usuario y claves SSH públicas en la propiedad items :

...
{
 "items": [
    {
     "key": "ssh-keys",
     "value": "PUBLIC_KEY"
    }
   ]
}
...

Reemplace PUBLIC_KEY con su clave pública, en uno de los siguientes formatos:

  • Formato para una clave sin tiempo de vencimiento:

    USERNAME:KEY_VALUE
  • Formato para una clave con tiempo de vencimiento:

    USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

Reemplace lo siguiente:

  • KEY_VALUE : el valor de la clave SSH pública
  • USERNAME : su nombre de usuario. Por ejemplo, cloudysanfrancisco o cloudysanfrancisco_gmail_com .

    Para las máquinas virtuales Linux, el USERNAME no puede ser root , a menos que configure su máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulte Conexión a instancias como usuario raíz .

    Para máquinas virtuales Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio AD, en el formato DOMAIN \ . Por ejemplo, el usuario cloudysanfrancisco dentro del AD ad.example.com tiene un USERNAME de example\cloudysanfrancisco .

  • EXPIRE_TIME : la hora en que caduca la clave, en formato ISO 8601 . Por ejemplo: 2021-12-04T20:12:00+0000

Puede agregar varias claves SSH agregando \n entre claves.

Agregue claves SSH a los metadatos de la instancia después de la creación de la VM

Puedes agregar claves SSH a los metadatos de la instancia después de la creación de la VM, usando la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.

Consola

Para agregar una clave SSH pública a los metadatos de la instancia usando la consola de Google Cloud, haga lo siguiente:

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Ir a instancias de VM

  2. Haga clic en el nombre de la VM para la que desea agregar una clave SSH.

  3. Haga clic en Editar .

  4. En Claves SSH , haga clic en Agregar elemento .

  5. Agregue su clave pública en el cuadro de texto. La clave debe estar en uno de los siguientes formatos:

    • Formato para una clave sin tiempo de vencimiento:

      KEY_VALUE USERNAME
    • Formato para una clave con tiempo de vencimiento:

      KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

    Reemplace lo siguiente:

    • KEY_VALUE : el valor de la clave SSH pública
    • USERNAME : su nombre de usuario. Por ejemplo, cloudysanfrancisco o cloudysanfrancisco_gmail_com .

      Para las máquinas virtuales Linux, el USERNAME no puede ser root , a menos que configure su máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulte Conexión a máquinas virtuales Linux como usuario raíz .

      Para máquinas virtuales Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio AD, en el formato DOMAIN \ . Por ejemplo, el usuario cloudysanfrancisco dentro del AD ad.example.com tiene un USERNAME de example\cloudysanfrancisco .

    • EXPIRE_TIME : la hora en que caduca la clave, en formato ISO 8601 . Por ejemplo: 2021-12-04T20:12:00+0000
  6. Haga clic en Guardar .

nube de gcloud

  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. Si hay claves SSH existentes en los metadatos de la instancia, debes volver a agregarlas a los metadatos de la instancia cada vez que agregues una nueva clave SSH mediante la CLI de gcloud. Si no vuelve a agregar las claves existentes, agregar una nueva clave borra las claves existentes.

    Para agregar una clave SSH pública a los metadatos de la instancia mediante la CLI de gcloud, haz lo siguiente:

    1. Si su VM ya tiene claves SSH públicas a nivel de instancia, consígalas de los metadatos y agréguelas a un archivo nuevo:

      1. Ejecute el comando gcloud compute instances describe para obtener los metadatos de la VM:

        gcloud compute instances describe VM_NAME
        

        Reemplace VM_NAME con el nombre de la VM para la que necesita agregar o eliminar claves SSH públicas.

        El resultado es similar al siguiente:

        ...
        metadata:
        ...
        - key: ssh-keys
         value: |-
           cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...
           baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}
        ...
        
      2. Copie el valor de metadatos ssh-keys .

      3. Cree y abra un nuevo archivo de texto en su estación de trabajo.

      4. En el archivo, pegue la lista de claves que acaba de copiar.

      5. Agregue su nueva clave al final de la lista, en uno de los siguientes formatos:

      • Formato para una clave sin tiempo de vencimiento:

        USERNAME:KEY_VALUE
      • Formato para una clave con tiempo de vencimiento:

        USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

      Reemplace lo siguiente:

      • KEY_VALUE : el valor de la clave SSH pública
      • USERNAME : su nombre de usuario. Por ejemplo, cloudysanfrancisco o cloudysanfrancisco_gmail_com .

        Para las máquinas virtuales Linux, el USERNAME no puede ser root , a menos que configure su máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulte Conexión a instancias como usuario raíz .

        Para máquinas virtuales Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio AD, en el formato DOMAIN \ . Por ejemplo, el usuario cloudysanfrancisco dentro del AD ad.example.com tiene un USERNAME de example\cloudysanfrancisco .

      • EXPIRE_TIME : la hora en que caduca la clave, en formato ISO 8601 . Por ejemplo: 2021-12-04T20:12:00+0000
      1. Guarde y cierre el archivo.
    2. Ejecuta el comando gcloud compute instances add-metadata para establecer el valor de ssh-keys :

      gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
      

      Reemplace lo siguiente:

      • VM_NAME : la VM para la que desea agregar la clave SSH
      • KEY_FILE con uno de los siguientes:
      • La ruta al archivo que creó en el paso anterior, si la VM tenía claves SSH existentes.
      • La ruta a su nuevo archivo de clave SSH pública, si la VM no tenía claves SSH existentes

DESCANSAR

Si existen claves SSH en los metadatos de la instancia, debes volver a agregarlas a los metadatos de la instancia cada vez que agregues una nueva clave SSH mediante la API de Compute Engine. Si no vuelve a agregar las claves existentes, agregar una nueva clave borra las claves existentes.

Para agregar una clave SSH pública a los metadatos de la instancia mediante la API de Compute Engine, haga lo siguiente:

  1. Obtenga los valores de fingerprint y ssh-keys de los metadatos mediante el método instances.get .

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Reemplace lo siguiente:

    • PROJECT_ID : ID de tu proyecto
    • ZONE : la zona de la VM para agregar una clave SSH
    • VM_NAME : la máquina virtual para la que estás agregando una clave SSH.

    La respuesta es similar a la siguiente:

    ...
    "fingerprint": "utgYE_XWtE8=",
    "items": [
    {
     "key": "ssh-keys",
      "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}"
    }
    ]
    ...
    
  2. Agregue el nuevo valor ssh-keys utilizando el método instances.setMetadata .

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
    "items": [
     {
      "key": "ssh-keys",
      "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY"
     }
    ]
    "fingerprint": "FINGERPRINT"
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : ID de tu proyecto
    • EXISTING_SSH_KEYS : el valor de la clave ssh-keys de la respuesta de la solicitud de instances.get
    • FINGERPRINT : la fingerprint de la respuesta de la solicitud projects.get
    • NEW_SSH_KEY : la nueva clave SSH, en uno de los siguientes formatos:

      • Formato para una clave sin tiempo de vencimiento:

        USERNAME:KEY_VALUE
      • Formato para una clave con tiempo de vencimiento:

        USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}

      Reemplace lo siguiente:

      • KEY_VALUE : el valor de la clave SSH pública
      • USERNAME : su nombre de usuario. Por ejemplo, cloudysanfrancisco o cloudysanfrancisco_gmail_com .

        Para las máquinas virtuales Linux, el USERNAME no puede ser root , a menos que configure su máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulte Conexión a instancias como usuario raíz .

        Para máquinas virtuales Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio AD, en el formato DOMAIN \ . Por ejemplo, el usuario cloudysanfrancisco dentro del AD ad.example.com tiene un USERNAME de example\cloudysanfrancisco .

      • EXPIRE_TIME : la hora en que caduca la clave, en formato ISO 8601 . Por ejemplo: 2021-12-04T20:12:00+0000

¿Qué sigue?