Adicionar chaves SSH a VMs


Neste documento, descrevemos como adicionar chaves SSH para instâncias de máquina virtual (VM) que usam o Login do SO e VMs que usam chaves SSH baseadas em metadados. Se você ou o administrador da organização não tiverem ativado o login do SO, as VMs usarão chaves SSH baseadas em metadados.

Antes de começar

  • Para mais informações sobre como gerenciar o acesso às suas VMs do Compute Engine, consulte Como escolher um método de acesso.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    Terraform

    Para usar as amostras de Terraform nesta página de um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure o Application Default Credentials com as credenciais de usuário.

    1. Instale a CLI do Google Cloud.
    2. Para inicializar a CLI gcloud, execute o seguinte comando:

      gcloud init
    3. Crie as credenciais de autenticação para sua Conta do Google:

      gcloud auth application-default login

    Veja mais informações em: Configurar a autenticação para um ambiente de desenvolvimento local.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Adicionar chaves a VMs que usam o login do SO

As VMs que usam o login do SO aceitam chaves SSH associadas à sua Conta do Google. É possível associar uma chave SSH pública à sua Conta do Google usando a CLI gcloud ou a API OS Login. Como administrador da sua organização, adicione chaves SSH às contas de usuário com a API Directory.

Ao adicionar chaves SSH à sua Conta do Google, o Compute Engine gera um nome de usuário, combinando o nome de usuário e o domínio do e-mail associado à sua Conta do Google. Por exemplo, se o endereço de e-mail for cloudysanfrancisco@gmail.com, seu nome de usuário será cloudysanfrancisco_gmail_com. Se você adicionar uma chave SSH em um projeto fora da sua organização, seu nome de usuário será prefixado com ext_, por exemplo, ext_cloudysanfrancisco_gmail_com. O administrador da organização pode personalizar o nome de usuário usando a API Directory. Se você já tiver um nome de usuário configurado, o Compute Engine o usará quando você adicionar chaves SSH.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Para adicionar uma chave SSH pública à conta, use o 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
    

    Substitua:

    • KEY_FILE_PATH: o caminho para a chave SSH pública na estação de trabalho. A chave precisa usar o formato public-openssh
    • PROJECT (opcional): um projeto em que você pretende usar a chave SSH. Especifique esse campo para usar sua chave SSH em um projeto fora da organização ou não seja membro de uma organização do Cloud Identity
    • EXPIRE_TIME (opcional): o prazo de validade da chave SSH

      Por exemplo, se você especificar 30m, a chave SSH expirará após 30 minutos.

      Essa sinalização usa as seguintes unidades:

      • s para segundos
      • m para minutos
      • h para horas
      • d para dias

Terraform

Para adicionar uma chave SSH pública à conta, use o recurso google_client_openid_userinfo com o 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 adicionar uma chave SSH pública à conta, use o método users.importSshPublicKey da API de Login do SO.

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

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

Substitua:

  • ACCOUNT_EMAIL: o endereço de e-mail associado à conta.
  • SSH_KEY: a chave pública a ser adicionada à conta.
  • EXPIRATION_TIMESTAMP: o prazo de validade da chave, em microssegundos, a partir do período (1 segundo = 106 microssegundos).

Adicionar chaves SSH a VMs que usam chaves SSH baseadas em metadados

As VMs que não usam o login do SO armazenam chaves SSH nos metadados do projeto e da instância do Compute Engine. É possível usar chaves SSH armazenadas em metadados do projeto para acessar todas as VMs de um projeto. É possível usar chaves SSH armazenadas em metadados de instância para acessar VMs individuais.

O Compute Engine não remove automaticamente chaves SSH expiradas de metadados no prazo de validade, mas as chaves expiradas não podem ser usadas para estabelecer novas conexões com VMs. Se você quiser remover chaves expiradas de metadados, consulte Remover chaves SSH de VMs que usam chaves baseadas em metadados.

É possível adicionar uma chave SSH pública aos metadados do projeto ou da instância usando o console do Google Cloud, a CLI gcloud ou a API Compute Engine.

Adicionar chaves SSH aos metadados do projeto

Adicione uma chave SSH pública aos metadados do projeto para acessar todas as VMs de um projeto, exceto as que bloqueiam chaves SSH do projeto. Para mais informações sobre como bloquear chaves SSH em todo o projeto, consulte Bloquear chaves SSH de VMs que usam chaves SSH baseadas em metadados.

Console

Para adicionar uma chave SSH pública aos metadados do projeto usando o console do Google Cloud, faça o seguinte:

  1. No Console do Google Cloud, acesse a página Metadados.

    Acessar a página "Metadados"

  2. Clique na guia Chaves SSH.

  3. Clique em Editar.

  4. Clique em Adicionar item. Uma caixa de texto é aberta.

  5. Adicione sua chave pública na caixa de texto. A chave precisa estar em um dos seguintes formatos:

    • Formato de uma chave sem prazo de validade:

      KEY_VALUE USERNAME
    • Formato de uma chave com prazo de validade:

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

    Substitua:

    • KEY_VALUE: o valor da chave SSH pública
    • USERNAME: seu nome de usuário. Por exemplo, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

      Em VMs do Linux, o USERNAME não pode ser root, a menos que você configure sua VM para permitir login raiz. Para mais informações, consulte Conectar-se a VMs do Linux como usuário raiz.

      Em VMs do Windows que usam o Active Directory (AD), o nome de usuário precisa ser anexado ao domínio do AD no formato DOMAIN\. Por exemplo, o usuário cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

    • EXPIRE_TIME: o tempo de expiração da chave, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000
  6. Clique em Save.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Se houver chaves SSH nos metadados do projeto, será necessário adicioná-las novamente aos metadados do projeto sempre que adicionar uma nova chave SSH usando a CLI gcloud. Se você não adicionar novamente as chaves existentes, adicionar uma nova chave apagará as atuais.

    Para adicionar uma chave SSH pública aos metadados do projeto usando a CLI gcloud, faça o seguinte:

    1. Se o projeto já tiver chaves SSH públicas em todo o projeto, acesse-as dos metadados e adicione-as a um novo arquivo:

      1. Execute o comando gcloud compute project-info describe para receber as chaves SSH do projeto:

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

        O resultado será assim:

        username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
        
      2. Copie o valor de metadados ssh-keys.

      3. Crie e abra um novo arquivo de texto na estação de trabalho.

      4. No arquivo, cole a lista de chaves que você acabou de copiar.

      5. Adicione a nova chave no final da lista em um dos seguintes formatos:

        • Formato de uma chave sem prazo de validade:

          USERNAME:KEY_VALUE
        • Formato de uma chave com prazo de validade:

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

        Substitua:

        • KEY_VALUE: o valor da chave SSH pública
        • USERNAME: seu nome de usuário. Por exemplo, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

          Em VMs do Linux, o USERNAME não pode ser root, a menos que você configure sua VM para permitir login raiz. Para mais informações, consulte Como se conectar a instâncias como usuário raiz.

          Em VMs do Windows que usam o Active Directory (AD), o nome de usuário precisa ser anexado ao domínio do AD no formato DOMAIN\. Por exemplo, o usuário cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

        • EXPIRE_TIME: o tempo de expiração da chave, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000
      6. Salve e feche o arquivo.

    2. Execute o comando gcloud compute project-info add-metadata para definir o valor ssh-keys de todo o projeto:

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

      Substitua KEY_FILE por um dos seguintes:

      • Caminho para o arquivo criado na etapa anterior, se o projeto tiver chaves SSH atuais
      • O caminho para o novo arquivo de chave SSH pública, caso o projeto não tenha chaves SSH atuais

Terraform

Para adicionar uma chave SSH pública aos metadados do projeto, use o 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

Se houver chaves SSH nos metadados do projeto, você precisará adicioná-las novamente aos metadados sempre que adicionar uma nova chave SSH usando a API Compute Engine. Se você não adicionar novamente as chaves existentes, adicionar uma nova chave apagará as atuais.

Para adicionar uma chave SSH pública aos metadados do projeto usando a API Compute Engine, faça o seguinte:

  1. Para receber os valores fingerprint e ssh-keys dos metadados, use o método projects.get

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

    Substitua PROJECT_ID pela ID do seu projeto.

    A resposta é semelhante a:

    ...
    "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. Adicione o novo valor de ssh-keys usando o 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"
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto
    • EXISTING_SSH_KEYS: o valor da chave ssh-keys da resposta da solicitação projects.get;
    • FINGERPRINT: o valor do fingerprint da resposta da solicitação projects.get
    • NEW_SSH_KEY: a nova chave SSH em um dos seguintes formatos:

      • Formato de uma chave sem prazo de validade:

        USERNAME:KEY_VALUE
      • Formato de uma chave com prazo de validade:

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

      Substitua:

      • KEY_VALUE: o valor da chave SSH pública
      • USERNAME: seu nome de usuário. Por exemplo, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

        Em VMs do Linux, o USERNAME não pode ser root, a menos que você configure sua VM para permitir login raiz. Para mais informações, consulte Como se conectar a instâncias como usuário raiz.

        Em VMs do Windows que usam o Active Directory (AD), o nome de usuário precisa ser anexado ao domínio do AD no formato DOMAIN\. Por exemplo, o usuário cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME: o tempo de expiração da chave, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000

Adicionar chaves SSH aos metadados da instância

É possível adicionar uma chave SSH pública aos metadados da instância ao criar uma VM ou depois de criar uma VM.

Adicionar chaves SSH aos metadados da instância durante a criação da VM

É possível adicionar chaves SSH aos metadados da instância durante a criação da VM, usando o console do Google Cloud, a CLI gcloud ou a API Compute Engine.

Console

Para criar uma VM e adicionar uma chave SSH pública aos metadados da instância ao mesmo tempo usando o console do Google Cloud, faça o seguinte:

  1. No console do Google Cloud, acesse a página Criar uma instância.

    Acesse "Criar uma instância"

  2. Especifique os detalhes da VM.

  3. Expanda a seção Opções avançadas e faça o seguinte:

    1. Expanda a seção Segurança.

    2. Selecione Adicionar chaves SSH geradas manualmente.

    3. Clique em Adicionar item.

    4. Adicione sua chave pública na caixa de texto. A compactação precisa estar em um dos seguintes formatos:

      • Formato de uma chave sem prazo de validade:

        KEY_VALUE USERNAME
      • Formato de uma chave com prazo de validade:

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

      Substitua:

      • KEY_VALUE: o valor da chave SSH pública
      • USERNAME: seu nome de usuário. Por exemplo, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

        Em VMs do Linux, o USERNAME não pode ser root, a menos que você configure sua VM para permitir login raiz. Para mais informações, consulte Conectar-se a VMs do Linux como usuário raiz.

        Em VMs do Windows que usam o Active Directory (AD), o nome de usuário precisa ser anexado ao domínio do AD no formato DOMAIN\. Por exemplo, o usuário cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME: o tempo de expiração da chave, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000
  4. Para criar e iniciar a VM, clique em Criar.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Para criar uma VM e adicionar uma chave SSH pública aos metadados da instância enquanto usa a CLI gcloud use o comando gcloud compute instances create:

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

    Substitua:

    • VM_NAME: o nome da nova VM.
    • PUBLIC_KEY: sua chave SSH pública, em um dos seguintes formatos:

      • Formato de uma chave sem prazo de validade:

        USERNAME:KEY_VALUE
      • Formato de uma chave com prazo de validade:

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

      Substitua:

      • KEY_VALUE: o valor da chave SSH pública
      • USERNAME: seu nome de usuário. Por exemplo, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

        Em VMs do Linux, o USERNAME não pode ser root, a menos que você configure sua VM para permitir login raiz. Para mais informações, consulte Como se conectar a instâncias como usuário raiz.

        Em VMs do Windows que usam o Active Directory (AD), o nome de usuário precisa ser anexado ao domínio do AD no formato DOMAIN\. Por exemplo, o usuário cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME: o tempo de expiração da chave, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000

    É possível adicionar várias chaves SSH usando a sinalização --metadata-from-file=ssh-keys=FILE_PATH. No arquivo, adicione uma lista de nomes de usuário e chaves SSH públicas em um dos formatos anteriores.

Terraform

Para adicionar uma chave SSH pública aos metadados da instância, use o 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 criar uma VM e adicionar uma chave SSH pública aos metadados da instância ao mesmo tempo usando o Compute Engine, crie uma solicitação POST para o método instances.insert:

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

Substitua:

  • PROJECT_ID: o ID do projeto;
  • ZONE: a zona da VM;

No corpo da solicitação, forneça nomes de usuário e chaves SSH públicas na propriedade items:

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

Substitua PUBLIC_KEY pela sua chave pública em um dos formatos a seguir:

  • Formato de uma chave sem prazo de validade:

    USERNAME:KEY_VALUE
  • Formato de uma chave com prazo de validade:

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

Substitua:

  • KEY_VALUE: o valor da chave SSH pública
  • USERNAME: seu nome de usuário. Por exemplo, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

    Em VMs do Linux, o USERNAME não pode ser root, a menos que você configure sua VM para permitir login raiz. Para mais informações, consulte Como se conectar a instâncias como usuário raiz.

    Em VMs do Windows que usam o Active Directory (AD), o nome de usuário precisa ser anexado ao domínio do AD no formato DOMAIN\. Por exemplo, o usuário cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

  • EXPIRE_TIME: o tempo de expiração da chave, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000

É possível adicionar várias chaves SSH adicionando \n entre chaves.

Adicionar chaves SSH aos metadados da instância após a criação da VM

É possível adicionar chaves SSH aos metadados da instância após a criação da VM, usando o console do Google Cloud, a CLI gcloud ou a API Compute Engine.

Console

Para adicionar uma chave SSH pública aos metadados da instância usando o console do Google Cloud, faça o seguinte:

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. Clique no nome da VM à qual você quer adicionar uma chave SSH.

  3. Clique em Editar.

  4. Em Chaves SSH, clique em Adicionar item.

  5. Adicione sua chave pública na caixa de texto. A chave precisa estar em um dos seguintes formatos:

    • Formato de uma chave sem prazo de validade:

      KEY_VALUE USERNAME
    • Formato de uma chave com prazo de validade:

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

    Substitua:

    • KEY_VALUE: o valor da chave SSH pública
    • USERNAME: seu nome de usuário. Por exemplo, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

      Em VMs do Linux, o USERNAME não pode ser root, a menos que você configure sua VM para permitir login raiz. Para mais informações, consulte Conectar-se a VMs do Linux como usuário raiz.

      Em VMs do Windows que usam o Active Directory (AD), o nome de usuário precisa ser anexado ao domínio do AD no formato DOMAIN\. Por exemplo, o usuário cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

    • EXPIRE_TIME: o tempo de expiração da chave, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000
  6. Clique em Save.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Se houver chaves SSH nos metadados da instância, você deverá adicioná-las novamente aos metadados da instância sempre que adicionar uma nova chave SSH usando a CLI gcloud. Se você não adicionar novamente as chaves atuais, adicionar uma nova chave apagará as atuais.

    Para adicionar uma chave SSH pública aos metadados da instância usando a CLI gcloud, faça o seguinte:

    1. Se a VM já tiver chaves SSH públicas no nível da instância, solicite-as dos metadados e adicione-as a um novo arquivo:

      1. Execute o comando gcloud compute instances describe para receber os metadados da VM:

        gcloud compute instances describe VM_NAME
        

        Substitua VM_NAME pelo nome da VM em que você precisa adicionar ou remover as chaves SSH públicas.

        A saída será assim:

        ...
        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 o valor de metadados ssh-keys.

      3. Crie e abra um novo arquivo de texto na estação de trabalho.

      4. No arquivo, cole a lista de chaves que você acabou de copiar.

      5. Adicione a nova chave no final da lista em um dos seguintes formatos:

      • Formato de uma chave sem prazo de validade:

        USERNAME:KEY_VALUE
      • Formato de uma chave com prazo de validade:

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

      Substitua:

      • KEY_VALUE: o valor da chave SSH pública
      • USERNAME: seu nome de usuário. Por exemplo, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

        Em VMs do Linux, o USERNAME não pode ser root, a menos que você configure sua VM para permitir login raiz. Para mais informações, consulte Como se conectar a instâncias como usuário raiz.

        Em VMs do Windows que usam o Active Directory (AD), o nome de usuário precisa ser anexado ao domínio do AD no formato DOMAIN\. Por exemplo, o usuário cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME: o tempo de expiração da chave, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000
      1. Salve e feche o arquivo.
    2. Execute o comando gcloud compute instances add-metadata para definir o valor ssh-keys:

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

      Substitua:

      • VM_NAME: a VM a que você quer adicionar a chave SSH.
      • KEY_FILE por um destes procedimentos:
      • O caminho para o arquivo criado na etapa anterior, se a VM tiver chaves SSH atuais
      • O caminho para o novo arquivo de chave SSH pública, se a VM não tiver chaves SSH atuais

REST

Se houver chaves SSH nos metadados da instância, você deverá adicioná-las novamente aos metadados da instância sempre que adicionar uma nova chave SSH usando a API Compute Engine. Se você não adicionar novamente as chaves atuais, adicionar uma nova chave apagará as atuais.

Para adicionar uma chave SSH pública aos metadados da instância usando a API Compute Engine, faça o seguinte:

  1. Para receber os valores fingerprint e ssh-keys dos metadados, use o método instances.get.

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

    Substitua:

    • PROJECT_ID: ID do projeto
    • ZONE: a zona da VM para adicionar uma chave SSH.
    • VM_NAME: a VM a que você está adicionando uma chave SSH.

    A resposta é semelhante a:

    ...
    "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. Adicione o novo valor de ssh-keys usando o 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"
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto
    • EXISTING_SSH_KEYS: o valor da chave ssh-keys da resposta da solicitação instances.get.
    • FINGERPRINT: o fingerprint da resposta da solicitação projects.get.
    • NEW_SSH_KEY: a nova chave SSH em um dos seguintes formatos:

      • Formato de uma chave sem prazo de validade:

        USERNAME:KEY_VALUE
      • Formato de uma chave com prazo de validade:

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

      Substitua:

      • KEY_VALUE: o valor da chave SSH pública
      • USERNAME: seu nome de usuário. Por exemplo, cloudysanfrancisco ou cloudysanfrancisco_gmail_com.

        Em VMs do Linux, o USERNAME não pode ser root, a menos que você configure sua VM para permitir login raiz. Para mais informações, consulte Como se conectar a instâncias como usuário raiz.

        Em VMs do Windows que usam o Active Directory (AD), o nome de usuário precisa ser anexado ao domínio do AD no formato DOMAIN\. Por exemplo, o usuário cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME: o tempo de expiração da chave, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000

A seguir