Añadir claves SSH a máquinas virtuales


En este documento se describe cómo añadir claves SSH a instancias de máquina virtual (VM) que usan OS Login y a VMs que usan claves SSH basadas en metadatos. Si tú o el administrador de tu organización no habéis habilitado el inicio de sesión del SO, tus VMs usarán claves SSH basadas en metadatos.

Antes de empezar

  • Para obtener información sobre cómo gestionar el acceso a tus VMs de Compute Engine, consulta Elegir un método de acceso.
  • Si aún no lo has hecho, crea un par de claves SSH.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos 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. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    Terraform

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

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

      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, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

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

    REST

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

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Añadir claves a las VMs que usan OS Login

Las VMs que usan OS Login aceptan las claves SSH asociadas a tu cuenta de Google. Puedes asociar una clave pública SSH a tu cuenta de Google mediante la CLI de gcloud o la API OS Login. Si eres administrador de tu organización, puedes añadir claves SSH a las cuentas de usuario mediante la API Directory.

Cuando añades claves SSH a tu cuenta de Google, Compute Engine genera un nombre de usuario combinando el nombre de usuario y el dominio del correo asociado a tu cuenta de Google. Por ejemplo, si tu dirección de correo es cloudysanfrancisco@gmail.com, tu nombre de usuario es cloudysanfrancisco_gmail_com. Si añades una clave SSH en un proyecto que no pertenece a tu organización, tu nombre de usuario tendrá el prefijo ext_, por ejemplo, ext_cloudysanfrancisco_gmail_com. El administrador de tu organización puede personalizar tu nombre de usuario con la API Directory. Si ya tienes configurado un nombre de usuario, Compute Engine lo usará cuando añadas claves SSH.

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 añadir una clave pública SSH 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
    

    Haz los cambios siguientes:

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

      Por ejemplo, si especifica 30m, la clave SSH caducará al cabo de 30 minutos.

      Esta marca usa las siguientes unidades:

      • s segundos
      • m durante minutos
      • h durante horas
      • d durante días
  3. Terraform

    Para añadir una clave pública SSH a tu cuenta, usa 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
    }

    REST

    Para añadir una clave pública SSH a tu cuenta, usa el método users.importSshPublicKey de la API OS Login:

    POST https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL:importSshPublicKey
    
    {
     "key": "SSH_KEY",
     "expirationTimeUsec": "EXPIRATION_TIMESTAMP"
    }
    

    Haz los cambios siguientes:

    • ACCOUNT_EMAIL: la dirección de correo asociada a tu cuenta
    • SSH_KEY: la clave pública que quieres añadir a la cuenta
    • EXPIRATION_TIMESTAMP: hora de vencimiento de la clave, en microsegundos desde el inicio del registro de tiempo (1 segundo = 106 microsegundos)

Añadir claves SSH a VMs que usan claves SSH basadas en metadatos

Las VMs que no usan OS Loginalmacenan las claves SSH en los metadatos del proyecto y de la instancia de Compute Engine. Si el inicio de sesión del SO está habilitado en una VM, el agente invitado de la VM ignora las claves almacenadas en los metadatos.

Puedes usar claves SSH almacenadas en los metadatos de un proyecto para acceder a todas las VMs de ese proyecto. Puedes usar claves SSH almacenadas en los metadatos de las instancias para acceder a máquinas virtuales concretas.

Compute Engine no elimina automáticamente las claves SSH caducadas de los metadatos en el momento de la caducidad, pero las claves caducadas no se pueden usar para establecer nuevas conexiones con las VMs. Si quieres quitar claves caducadas de los metadatos, consulta Quitar claves SSH de máquinas virtuales que usan claves basadas en metadatos.

Puedes añadir una clave pública SSH a los metadatos de un proyecto o de una instancia de VM mediante la Google Cloud consola, la CLI de gcloud o REST. No puedes definir valores de metadatos zonales para claves SSH.

Añadir claves SSH a los metadatos de un proyecto

Puedes añadir una clave pública SSH a los metadatos de un proyecto para acceder a todas las VMs de ese proyecto, excepto a las que bloqueen las claves SSH de todo el proyecto. Para obtener más información sobre cómo bloquear claves SSH del proyecto, consulta Bloquear claves SSH de máquinas virtuales que usan claves SSH basadas en metadatos.

Consola

Para añadir una clave pública SSH a los metadatos del proyecto mediante la consolaGoogle Cloud , haz lo siguiente:

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

    Ir a Metadatos

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

  3. Haz clic en Editar.

  4. Haz clic en Añadir elemento.

  5. En el campo Clave SSH que se abre, añade tu clave SSH pública. La clave debe tener uno de los siguientes formatos:

    • Formato de una clave sin tiempo de vencimiento:

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

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

    Haz los cambios siguientes:

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

      En las máquinas virtuales Linux, el USERNAME no puede ser root, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a VMs Linux como usuario root.

      En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato DOMAIN\. Por ejemplo, el usuario cloudysanfrancisco de la ad.example.com AD tiene un USERNAME de example\cloudysanfrancisco.

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

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 en los metadatos del proyecto, debes volver a añadirlas a los metadatos del proyecto cada vez que añadas una clave SSH con la CLI de gcloud. Si no vuelves a añadir las llaves que ya tenías, al añadir una nueva se borrarán las que ya tenías.

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

    1. Si tu proyecto ya tiene claves SSH públicas de todo el proyecto, obténlas de los metadatos y añádelas a un archivo nuevo:

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

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

        El resultado debería ser similar al siguiente:

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

      3. Crea y abre un nuevo archivo de texto en tu estación de trabajo.

      4. En el archivo, pega la lista de claves que acabas de copiar.

      5. Añade la nueva clave al final de la lista con uno de los siguientes formatos:

        • Formato de una clave sin tiempo de vencimiento:

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

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

        Haz los cambios siguientes:

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

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

          En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato DOMAIN\. Por ejemplo, el usuario cloudysanfrancisco de la ad.example.com AD tiene un USERNAME de example\cloudysanfrancisco.

        • EXPIRE_TIME: hora de vencimiento de la clave, en formato ISO 8601. Por ejemplo: 2021-12-04T20:12:00+0000
      6. Guarda y cierra el archivo.

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

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

      Sustituye KEY_FILE por una de las siguientes opciones:

      • La ruta al archivo que has creado en el paso anterior, si el proyecto tenía claves SSH
      • La ruta al nuevo archivo de clave pública SSH, si el proyecto no tenía claves SSH

Terraform

Para añadir una clave pública SSH a los metadatos de tu proyecto, usa 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
  }
}

REST

Si hay claves SSH en los metadatos del proyecto, debes volver a añadirlas a los metadatos del proyecto cada vez que añadas una clave SSH con la API de Compute Engine. Si no vuelves a añadir las llaves que ya tenías, al añadir una nueva se borrarán las que ya tenías.

Para añadir una clave pública SSH a los metadatos del proyecto mediante la API de Compute Engine, sigue estos pasos:

  1. Obtén los valores fingerprint y ssh-keys de los metadatos mediante el método projects.get.

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

    Sustituye PROJECT_ID por el ID del 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. Añade el nuevo valor ssh-keys con 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"
    }
    

    Haz los cambios siguientes:

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

      • Formato de una clave sin tiempo de vencimiento:

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

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

      Haz los cambios siguientes:

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

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

        En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato DOMAIN\. Por ejemplo, el usuario cloudysanfrancisco de la ad.example.com AD tiene un USERNAME de example\cloudysanfrancisco.

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

Añadir claves SSH a los metadatos de la instancia

Puedes añadir una clave pública SSH a los metadatos de una instancia cuando creas una VM o después de crearla.

Añadir claves SSH a los metadatos de la instancia durante la creación de la VM

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

Consola

Para crear una instancia y añadir una clave pública SSH a los metadatos de la instancia al mismo tiempo mediante la Google Cloud consola, sigue estos pasos:

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

    Ir a Crear una instancia

  2. Para añadir una clave pública SSH a los metadatos de una instancia, sigue estos pasos:

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

    2. Despliega la sección Gestionar acceso.

    3. Para inhabilitar OS Login, desmarca la casilla Controlar el acceso a las VMs mediante permisos de gestión de identidades y accesos.

    4. Si quieres permitir que las claves SSH públicas de los metadatos del proyecto accedan a la instancia, desmarca la casilla Bloquear claves SSH del proyecto.

    5. En la sección Añadir claves SSH generadas manualmente, haz clic en Añadir elemento.

    6. Añade tu clave pública en el cuadro de texto. La clave debe tener uno de los siguientes formatos:

      • Formato de una clave sin tiempo de vencimiento:

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

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

      Haz los cambios siguientes:

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

        En las máquinas virtuales Linux, el USERNAME no puede ser root, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a VMs Linux como usuario root.

        En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato DOMAIN\. Por ejemplo, el usuario cloudysanfrancisco de la ad.example.com AD tiene un USERNAME de example\cloudysanfrancisco.

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

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

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 VM y añadir una clave pública SSH a los metadatos de la instancia al mismo tiempo con la CLI de gcloud, usa el comando gcloud compute instances create:

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

    Haz los cambios siguientes:

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

      • Formato de una clave sin tiempo de vencimiento:

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

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

      Haz los cambios siguientes:

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

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

        En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato DOMAIN\. Por ejemplo, el usuario cloudysanfrancisco de la ad.example.com AD tiene un USERNAME de example\cloudysanfrancisco.

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

    Puedes añadir varias claves SSH con la marca --metadata-from-file=ssh-keys=FILE_PATH. En el archivo, añade una lista de nombres de usuario y claves públicas SSH en uno de los formatos anteriores.

  3. Terraform

    Para añadir una clave pública SSH a los metadatos de tu instancia, usa 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
      }
    }

    REST

    Para crear una VM y añadir una clave pública SSH a los metadatos de la instancia al mismo tiempo con Compute Engine, crea una solicitud POST al método instances.insert:

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

    Haz los cambios siguientes:

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

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

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

    Sustituye PUBLIC_KEY por tu clave pública en uno de los siguientes formatos:

    • Formato de una clave sin tiempo de vencimiento:

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

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

    Haz los cambios siguientes:

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

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

      En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato DOMAIN\. Por ejemplo, el usuario cloudysanfrancisco de la ad.example.com AD tiene un USERNAME de example\cloudysanfrancisco.

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

    Puedes añadir varias claves SSH añadiendo \n entre ellas.

Añadir claves SSH a los metadatos de la instancia después de crear la VM

Puedes añadir claves SSH a los metadatos de la instancia después de crear la VM mediante laGoogle Cloud consola, la CLI de gcloud o la API de Compute Engine.

Consola

Para añadir una clave pública SSH a los metadatos de una instancia mediante laGoogle Cloud consola, haz lo siguiente:

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

    Ir a Instancias de VM

  2. Haga clic en el nombre de la VM a la que quiera añadir una clave SSH.

  3. Haz clic en Editar.

  4. En Claves SSH, haz clic en Añadir elemento.

  5. Añade tu clave pública en el cuadro de texto. La clave debe tener uno de los siguientes formatos:

    • Formato de una clave sin tiempo de vencimiento:

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

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

    Haz los cambios siguientes:

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

      En las máquinas virtuales Linux, el USERNAME no puede ser root, a menos que configures tu máquina virtual para permitir el inicio de sesión como root. Para obtener más información, consulta Conectarse a VMs Linux como usuario root.

      En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato DOMAIN\. Por ejemplo, el usuario cloudysanfrancisco de la ad.example.com AD tiene un USERNAME de example\cloudysanfrancisco.

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

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 en los metadatos de la instancia, debes volver a añadirlas a los metadatos de la instancia cada vez que añadas una clave SSH con la CLI de gcloud. Si no vuelves a añadir las claves que ya tienes, al añadir una nueva se borrarán las que ya tenías.

    Para añadir una clave pública SSH a los metadatos de una instancia mediante la CLI de gcloud, sigue estos pasos:

    1. Si tu VM ya tiene claves SSH públicas a nivel de instancia, obténlas de los metadatos y añádelas a un archivo nuevo:

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

        gcloud compute instances describe VM_NAME
        

        Sustituye VM_NAME por el nombre de la VM a la que quieras añadir o quitar claves públicas SSH.

        El resultado debería ser 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. Copia el valor de los metadatos ssh-keys.

      3. Crea y abre un nuevo archivo de texto en tu estación de trabajo.

      4. En el archivo, pega la lista de claves que acabas de copiar.

      5. Añade la nueva clave al final de la lista con uno de los siguientes formatos:

      • Formato de una clave sin tiempo de vencimiento:

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

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

      Haz los cambios siguientes:

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

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

        En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato DOMAIN\. Por ejemplo, el usuario cloudysanfrancisco de la ad.example.com AD tiene un USERNAME de example\cloudysanfrancisco.

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

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

      Haz los cambios siguientes:

      • VM_NAME: la VM a la que quieres añadir la clave SSH
      • KEY_FILE con uno de los siguientes elementos:
      • La ruta al archivo que has creado en el paso anterior, si la VM tenía claves SSH
      • La ruta al nuevo archivo de clave pública SSH, si la VM no tenía claves SSH
  3. REST

    Si hay claves SSH en los metadatos de la instancia, debe volver a añadirlas a los metadatos de la instancia cada vez que añada una clave SSH con la API Compute Engine. Si no vuelves a añadir las claves que ya tienes, al añadir una nueva se borrarán las que ya tenías.

    Para añadir una clave pública SSH a los metadatos de una instancia mediante la API Compute Engine, sigue estos pasos:

    1. Obtén los valores 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
      

      Haz los cambios siguientes:

      • PROJECT_ID: tu ID de proyecto
      • ZONE: la zona de la VM a la que se va a añadir una clave SSH
      • VM_NAME: la VM a la que vas a añadir 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. Añade el nuevo valor ssh-keys con 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"
      }
      

      Haz los cambios siguientes:

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

        • Formato de una clave sin tiempo de vencimiento:

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

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

        Haz los cambios siguientes:

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

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

          En las VMs de Windows que usan Active Directory (AD), el nombre de usuario debe ir precedido del dominio de AD, con el formato DOMAIN\. Por ejemplo, el usuario cloudysanfrancisco de la ad.example.com AD tiene un USERNAME de example\cloudysanfrancisco.

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

Siguientes pasos