Adicione chaves SSH a VMs

Este documento descreve como adicionar chaves SSH a instâncias de máquinas virtuais (VMs) que usam o Início de sessão do SO e VMs que usam chaves SSH baseadas em metadados. Se o administrador da sua organização ou você não tiver ativado o Início de sessão do SO, as suas VMs usam chaves SSH baseadas em metadados.

Antes de começar

  • Para obter informações sobre a gestão do acesso às suas VMs do Compute Engine, consulte o artigo Escolher um método de acesso.
  • Se ainda não o fez, crie um par de chaves SSH.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    Terraform

    Para usar os exemplos do Terraform nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as credenciais predefinidas da aplicação com as suas credenciais de utilizador.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade 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 mais informações, consulte Set up authentication for a local development environment.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Adicione chaves a VMs que usam o Início de sessão do SO

As VMs que usam o Início de sessão do SO aceitam chaves SSH associadas à sua conta Google. Pode associar uma chave SSH pública à sua Conta Google através da CLI gcloud ou da API OS Login. Se for administrador da sua organização, pode adicionar chaves SSH às contas de utilizador através da API Directory.

Quando adiciona chaves SSH à sua Conta Google, o Compute Engine gera um nome de utilizador para si combinando o nome de utilizador e o domínio do email associado à sua Conta Google. Por exemplo, se o seu endereço de email for cloudysanfrancisco@gmail.com, o seu nome de utilizador é cloudysanfrancisco_gmail_com. Se adicionar uma chave SSH num projeto que esteja fora da sua organização, o seu nome de utilizador tem o prefixo ext_, por exemplo, ext_cloudysanfrancisco_gmail_com. O administrador da sua organização pode personalizar o seu nome de utilizador através da API Directory. Se já tiver um nome de utilizador configurado, o Compute Engine usa esse nome de utilizador quando adiciona chaves 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 adicionar uma chave pública de SSH à sua 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 o seguinte:

    • KEY_FILE_PATH: o caminho para a chave pública de SSH na sua estação de trabalho. A chave tem de usar o formato public-openssh
    • PROJECT: opcional: um projeto onde pretende usar a sua chave SSH. Especifique este campo para usar a sua chave SSH num projeto fora da sua organização ou se não for membro de uma organização do Cloud ID
    • EXPIRE_TIME: Opcional: a hora de validade da chave SSH

      Por exemplo, se especificar 30m, a chave SSH expira após 30 minutos.

      Esta flag usa as seguintes unidades:

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

    Para adicionar uma chave pública de SSH à sua conta, use o recurso google_client_openid_userinfo juntamente 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 pública de SSH à sua conta, use o método users.importSshPublicKey da API de Início de sessão do SO:

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

    Substitua o seguinte:

    • ACCOUNT_EMAIL: o endereço de email associado à sua conta
    • SSH_KEY: a chave pública que quer adicionar à conta
    • EXPIRATION_TIMESTAMP: a hora de validade da chave, em microssegundos desde o início da época (1 segundo = 106 microssegundos)

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

As VMs que não usam o Início de sessão do SO armazenam chaves SSH nos metadados do projeto e da instância do Compute Engine. Se o início de sessão do SO estiver ativado para uma VM, o agente convidado da VM ignora as chaves armazenadas nos metadados.

Pode usar chaves SSH armazenadas nos metadados do projeto para aceder a todas as VMs num projeto. Pode usar chaves SSH armazenadas nos metadados da instância para aceder a VMs individuais.

O Compute Engine não remove automaticamente as chaves SSH expiradas dos metadados no momento da expiração, mas não é possível usar as chaves expiradas para estabelecer novas ligações a VMs. Se quiser remover chaves expiradas dos metadados, consulte o artigo Remova chaves SSH de VMs que usam chaves baseadas em metadados.

Pode adicionar uma chave SSH pública aos metadados do projeto ou da instância de VM através da Google Cloud consola, da CLI gcloud ou da REST. Não é possível definir valores de metadados zonais para chaves SSH.

Adicione chaves SSH aos metadados do projeto

Pode adicionar uma chave pública de SSH aos metadados do projeto para aceder a todas as VMs num projeto, exceto às VMs que bloqueiam chaves de SSH ao nível do projeto. Para mais informações sobre como bloquear chaves SSH ao nível do projeto, consulte o artigo Bloqueie chaves SSH de VMs que usam chaves SSH baseadas em metadados.

Consola

Para adicionar uma chave pública de SSH aos metadados do projeto através da Google Cloud consola, faça o seguinte:

  1. Na Google Cloud consola, aceda à página Metadados.

    Aceda aos metadados

  2. Clique no separador Chaves SSH.

  3. Clique em Edit.

  4. Clique em Adicionar item.

  5. No campo Chave SSH apresentado, adicione a sua chave SSH pública. A chave tem de estar num dos seguintes formatos:

    • Formato de uma chave sem hora de validade:

      KEY_VALUE USERNAME
    • Formato de uma chave com um período de validade:

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

    Substitua o seguinte:

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

      Para VMs Linux, o USERNAME não pode ser root, a menos que configure a VM para permitir o início de sessão de raiz. Para mais informações, consulte o artigo Estabeleça ligação a VMs do Linux como utilizador root.

      Para VMs do Windows que usam o Active Directory (AD), o nome de utilizador tem de ter o domínio do AD no início, no formato DOMAIN\. Por exemplo, o utilizador cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

    • EXPIRE_TIME: a hora em que a chave expira, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000
  6. Clique em 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. Se existirem chaves SSH nos metadados do projeto, tem de as adicionar novamente aos metadados do projeto sempre que adicionar uma nova chave SSH através da CLI gcloud. Se não voltar a adicionar as chaves existentes, a adição de uma nova chave apaga as chaves existentes.

    Para adicionar uma chave pública de SSH aos metadados do projeto através da CLI gcloud, faça o seguinte:

    1. Se o seu projeto já tiver chaves SSH públicas ao nível do projeto, obtenha-as a partir dos metadados e adicione-as a um novo ficheiro:

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

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

        O resultado é semelhante ao seguinte:

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

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

      4. No ficheiro, cole a lista de chaves que acabou de copiar.

      5. Adicione a nova chave no final da lista, num dos seguintes formatos:

        • Formato de uma chave sem hora de validade:

          USERNAME:KEY_VALUE
        • Formato de uma chave com um período de validade:

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

        Substitua o seguinte:

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

          Para VMs Linux, o USERNAME não pode ser root, a menos que configure a VM para permitir o início de sessão de raiz. Para mais informações, consulte o artigo Estabelecer ligação a instâncias como utilizador root.

          Para VMs do Windows que usam o Active Directory (AD), o nome de utilizador tem de ter o domínio do AD no início, no formato DOMAIN\. Por exemplo, o utilizador cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

        • EXPIRE_TIME: a hora em que a chave expira, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000
      6. Guarde e feche o ficheiro.

    2. Execute o comando gcloud compute project-info add-metadata para definir o valor ssh-keys ao nível do projeto:

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

      Substitua KEY_FILE por uma das seguintes opções:

      • O caminho para o ficheiro que criou no passo anterior, se o projeto tiver chaves SSH existentes
      • O caminho para o novo ficheiro de chave SSH pública, se o projeto não tiver chaves SSH existentes

Terraform

Para adicionar uma chave pública de SSH aos metadados do seu 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 existirem chaves SSH nos metadados do projeto, tem de as adicionar novamente aos metadados do projeto sempre que adicionar uma nova chave SSH através da API Compute Engine. Se não voltar a adicionar as chaves existentes, a adição de uma nova chave apaga as chaves existentes.

Para adicionar uma chave pública de SSH aos metadados do projeto através da API Compute Engine, faça o seguinte:

  1. Obtenha os valores fingerprint e ssh-keys dos metadados através do método projects.get

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

    Substitua PROJECT_ID pelo ID do seu projeto.

    A resposta é semelhante à seguinte:

    ...
    "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 ssh-keys através do 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 o seguinte:

    • PROJECT_ID: o ID do seu projeto
    • EXISTING_SSH_KEYS: o valor da chave ssh-keys da resposta do pedido projects.get
    • FINGERPRINT: o valor de fingerprint da resposta do pedido projects.get
    • NEW_SSH_KEY: a nova chave SSH, num dos seguintes formatos:

      • Formato de uma chave sem hora de validade:

        USERNAME:KEY_VALUE
      • Formato de uma chave com um período de validade:

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

      Substitua o seguinte:

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

        Para VMs Linux, o USERNAME não pode ser root, a menos que configure a VM para permitir o início de sessão de raiz. Para mais informações, consulte o artigo Estabelecer ligação a instâncias como utilizador root.

        Para VMs do Windows que usam o Active Directory (AD), o nome de utilizador tem de ter o domínio do AD no início, no formato DOMAIN\. Por exemplo, o utilizador cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME: a hora em que a chave expira, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000

Adicione chaves SSH aos metadados da instância

Pode adicionar uma chave SSH pública aos metadados da instância quando cria uma VM ou depois de criar uma VM.

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

Pode adicionar chaves SSH aos metadados da instância durante a criação da VM através da Google Cloud consola, da CLI gcloud ou da API Compute Engine.

Consola

Para criar uma instância e adicionar uma chave pública de SSH aos metadados da instância ao mesmo tempo através da consola Google Cloud , faça o seguinte:

  1. Na Google Cloud consola, aceda à página Criar uma instância.

    Aceda a Criar uma instância

  2. Para adicionar uma chave pública de SSH aos metadados da instância, faça o seguinte:

    1. No menu de navegação, clique em Segurança.

    2. Expanda a secção Gerir acesso.

    3. Para desativar o Início de sessão do SO, desmarque a caixa de verificação Controlar o acesso à VM através de autorizações da IAM.

    4. Se quiser permitir que as chaves SSH públicas nos metadados do projeto acedam à instância, desmarque a caixa de verificação Bloquear chaves SSH ao nível do projeto.

    5. Na secção Adicione chaves SSH geradas manualmente, clique em Adicionar item.

    6. Adicione a sua chave pública na caixa de texto. A chave tem de estar num dos seguintes formatos:

      • Formato de uma chave sem hora de validade:

        KEY_VALUE USERNAME
      • Formato de uma chave com um período de validade:

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

      Substitua o seguinte:

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

        Para VMs Linux, o USERNAME não pode ser root, a menos que configure a VM para permitir o início de sessão de raiz. Para mais informações, consulte o artigo Estabeleça ligação a VMs do Linux como utilizador root.

        Para VMs do Windows que usam o Active Directory (AD), o nome de utilizador tem de ter o domínio do AD no início, no formato DOMAIN\. Por exemplo, o utilizador cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME: a hora em que a chave expira, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000
  3. Opcional: especifique outras opções de configuração. Para mais informações, consulte o artigo Opções de configuração durante a criação da instância.

  4. Para criar e iniciar a instância, clique em Criar.

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 criar uma VM e adicionar uma chave pública de SSH aos metadados da instância em simultâneo com a CLI gcloud, use o comando gcloud compute instances create:

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

    Substitua o seguinte:

    • VM_NAME: o nome da nova VM
    • PUBLIC_KEY: a sua chave SSH pública, num dos seguintes formatos:

      • Formato de uma chave sem hora de validade:

        USERNAME:KEY_VALUE
      • Formato de uma chave com um período de validade:

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

      Substitua o seguinte:

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

        Para VMs Linux, o USERNAME não pode ser root, a menos que configure a VM para permitir o início de sessão de raiz. Para mais informações, consulte o artigo Estabelecer ligação a instâncias como utilizador root.

        Para VMs do Windows que usam o Active Directory (AD), o nome de utilizador tem de ter o domínio do AD no início, no formato DOMAIN\. Por exemplo, o utilizador cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME: a hora em que a chave expira, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000

    Pode adicionar várias chaves SSH usando a flag --metadata-from-file=ssh-keys=FILE_PATH. No ficheiro, adicione uma lista de nomes de utilizador e chaves SSH públicas num dos formatos anteriores.

  3. Terraform

    Para adicionar uma chave pública de SSH 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 através do Compute Engine, crie um pedido POST para o método instances.insert:

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

    Substitua o seguinte:

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

    No corpo do pedido, indique os nomes de utilizador e as chaves SSH públicas na propriedade items:

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

    Substitua PUBLIC_KEY pela sua chave pública num dos seguintes formatos:

    • Formato de uma chave sem hora de validade:

      USERNAME:KEY_VALUE
    • Formato de uma chave com um período de validade:

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

    Substitua o seguinte:

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

      Para VMs Linux, o USERNAME não pode ser root, a menos que configure a VM para permitir o início de sessão de raiz. Para mais informações, consulte o artigo Estabelecer ligação a instâncias como utilizador root.

      Para VMs do Windows que usam o Active Directory (AD), o nome de utilizador tem de ter o domínio do AD no início, no formato DOMAIN\. Por exemplo, o utilizador cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

    • EXPIRE_TIME: a hora em que a chave expira, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000

    Pode adicionar várias chaves SSH adicionando \n entre as chaves.

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

Pode adicionar chaves SSH aos metadados da instância após a criação da VM através da Google Cloud consola, da CLI gcloud ou da API Compute Engine.

Consola

Para adicionar uma chave pública de SSH aos metadados da instância através da Google Cloud consola, faça o seguinte:

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder a Instâncias de VM

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

  3. Clique em Edit.

  4. Em Chaves SSH, clique em Adicionar item.

  5. Adicione a sua chave pública na caixa de texto. A chave tem de estar num dos seguintes formatos:

    • Formato de uma chave sem hora de validade:

      KEY_VALUE USERNAME
    • Formato de uma chave com um período de validade:

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

    Substitua o seguinte:

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

      Para VMs Linux, o USERNAME não pode ser root, a menos que configure a VM para permitir o início de sessão de raiz. Para mais informações, consulte o artigo Estabeleça ligação a VMs do Linux como utilizador root.

      Para VMs do Windows que usam o Active Directory (AD), o nome de utilizador tem de ter o domínio do AD no início, no formato DOMAIN\. Por exemplo, o utilizador cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

    • EXPIRE_TIME: a hora em que a chave expira, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000
  6. Clique em 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. Se existirem chaves SSH nos metadados da instância, tem de as adicionar novamente aos metadados da instância sempre que adicionar uma nova chave SSH através da CLI gcloud. Se não voltar a adicionar as chaves existentes, a adição de uma nova chave apaga as chaves existentes.

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

    1. Se a sua VM já tiver chaves SSH públicas ao nível da instância, obtenha-as a partir dos metadados e adicione-as a um novo ficheiro:

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

        gcloud compute instances describe VM_NAME
        

        Substitua VM_NAME pelo nome da VM para a qual precisa de adicionar ou remover chaves SSH públicas.

        O resultado é semelhante ao seguinte:

        ...
        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 ficheiro de texto na sua estação de trabalho.

      4. No ficheiro, cole a lista de chaves que acabou de copiar.

      5. Adicione a nova chave no final da lista, num dos seguintes formatos:

      • Formato de uma chave sem hora de validade:

        USERNAME:KEY_VALUE
      • Formato de uma chave com um período de validade:

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

      Substitua o seguinte:

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

        Para VMs Linux, o USERNAME não pode ser root, a menos que configure a VM para permitir o início de sessão de raiz. Para mais informações, consulte o artigo Estabelecer ligação a instâncias como utilizador root.

        Para VMs do Windows que usam o Active Directory (AD), o nome de utilizador tem de ter o domínio do AD no início, no formato DOMAIN\. Por exemplo, o utilizador cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

      • EXPIRE_TIME: a hora em que a chave expira, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000
      1. Guarde e feche o ficheiro.
    2. Execute o comando gcloud compute instances add-metadata para definir o valor de ssh-keys:

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

      Substitua o seguinte:

      • VM_NAME: a VM à qual quer adicionar a chave SSH
      • KEY_FILE com uma das seguintes opções:
      • O caminho para o ficheiro que criou no passo anterior, se a VM tiver chaves SSH existentes
      • O caminho para o novo ficheiro de chave SSH pública, se a VM não tiver chaves SSH existentes
  3. REST

    Se existirem chaves SSH nos metadados da instância, tem de adicioná-las novamente aos metadados da instância sempre que adicionar uma nova chave SSH através da API Compute Engine. Se não voltar a adicionar as chaves existentes, a adição de uma nova chave apaga as chaves existentes.

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

    1. Obtenha os valores fingerprint e ssh-keys dos metadados através do método instances.get.

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

      Substitua o seguinte:

      • PROJECT_ID: o ID do seu projeto
      • ZONE: a zona da VM à qual adicionar uma chave SSH
      • VM_NAME: a VM para a qual está a adicionar uma chave SSH

      A resposta é semelhante à seguinte:

      ...
      "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 ssh-keys através do 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 o seguinte:

      • PROJECT_ID: o ID do seu projeto
      • EXISTING_SSH_KEYS: o valor da chave ssh-keys da resposta do pedido instances.get
      • FINGERPRINT: o fingerprint da resposta do pedido projects.get
      • NEW_SSH_KEY: a nova chave SSH, num dos seguintes formatos:

        • Formato de uma chave sem hora de validade:

          USERNAME:KEY_VALUE
        • Formato de uma chave com um período de validade:

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

        Substitua o seguinte:

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

          Para VMs Linux, o USERNAME não pode ser root, a menos que configure a VM para permitir o início de sessão de raiz. Para mais informações, consulte o artigo Estabelecer ligação a instâncias como utilizador root.

          Para VMs do Windows que usam o Active Directory (AD), o nome de utilizador tem de ter o domínio do AD no início, no formato DOMAIN\. Por exemplo, o utilizador cloudysanfrancisco no AD ad.example.com tem um USERNAME de example\cloudysanfrancisco.

        • EXPIRE_TIME: a hora em que a chave expira, no formato ISO 8601. Por exemplo: 2021-12-04T20:12:00+0000

O que se segue?