Configure o Início de sessão do SO para exigir certificados SSH para ligações SSH


As VMs que suportam certificados do Início de sessão do SO suportam ligações de chaves SSH e certificados SSH. Os certificados SSH são chaves SSH que foram assinadas por outra chave fidedigna. Neste caso, trata-se de uma autoridade de certificação gerida pelo Início de sessão do SO. Este documento descreve como configurar VMs com o Início de sessão do SO para exigirem certificados SSH para ligações SSH e bloquear ligações de chaves SSH não assinadas.

Quando configura o Início de sessão do SO para exigir certificados SSH para ligações a VMs, apenas os certificados SSH assinados pela autoridade de certificação são permitidos para estabelecer ligação a VMs. As ligações de chaves SSH não assinadas são rejeitadas. Os certificados SSH têm um prazo de validade de cinco minutos, após o qual deixam de poder ser usados para estabelecer ligação a VMs e tem de ser gerado um novo certificado.

Recomendamos que configure o Início de sessão do SO para exigir certificados SSH para ligações SSH como uma camada adicional de segurança contra utilizadores maliciosos. Os certificados SSH têm uma duração curta e só são válidos para uma VM específica, o que significa que, se forem comprometidos, a respetiva superfície de ataque é significativamente menor e a respetiva janela de ataque é significativamente mais curta do que a das chaves SSH de longa duração.

Se a sua organização usar a federação de identidades da força de trabalho, consulte o artigo Use a federação de identidades da força de trabalho com o Início de sessão do SO para saber como ativar os certificados SSH para a sua organização.

Antes de começar

Limitações

  • A VM à qual está a estabelecer ligação tem de ter a versão 7.4 ou posterior do OpenSSH para usar certificados SSH.

Exigir certificados SSH

Pode configurar o Início de sessão do SO para exigir certificados SSH para todas as ligações SSH a VMs do Início de sessão do SO no seu projeto ou para VMs individuais. Depois de configurar o Início de sessão no SO para exigir certificados SSH, as ligações SSH a partir da Google Cloud consola e da CLI gcloud usam certificados SSH por predefinição. Se não quiser configurar o início de sessão do SO para exigir certificados, mas quiser usar certificados para estabelecer ligação a VMs, tem de estabelecer ligação através de ferramentas de terceiros, conforme descrito na secção Estabeleça ligação a uma VM através de um certificado SSH.

Exija certificados SSH para todas as VMs com o Início de sessão do SO ativado num projeto

Para exigir certificados SSH para todas as ligações a todas as VMs que usam o Início de sessão do SO no seu projeto, use a consola ou a CLI gcloud. Google Cloud

Consola

Para exigir certificados SSH para todas as ligações a VMs com o Início de sessão no SO ativado, use a consola para definir enable-oslogin e enable-oslogin-certificates como TRUE nos metadados do projeto: Google Cloud

  1. Aceda à página Metadados.

    Aceda aos metadados

  2. Clique em Edit.

  3. Clique em Adicionar item.

    1. No campo Chave, introduza enable-oslogin.
    2. No campo Valor, introduza TRUE.
  4. Clique em Adicionar item.

    1. No campo Chave, introduza enable-oslogin-certificates.
    2. No campo Valor, introduza TRUE.
  5. Clique em Guardar.

gcloud

Para exigir certificados SSH para todas as ligações a VMs com o Início de sessão do SO ativado, use o comando gcloud compute project-info add-metadata para definir enable-oslogin=TRUE e enable-oslogin-certificates=TRUE nos metadados do projeto:

gcloud compute project-info add-metadata \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Exija certificados SSH numa única VM com o Início de sessão do SO ativado

Para exigir certificados para todas as ligações SSH a uma única VM que use o início de sessão do SO, use a Google Cloud consola ou a CLI gcloud.

Consola

Para exigir certificados SSH para todas as ligações a uma única VM, use a consola para definir enable-oslogin e enable-oslogin-certificates como TRUE nos metadados da instância:Google Cloud

  1. Aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique no nome da VM para a qual quer exigir certificados SSH.

  3. Clique em Edit.

  4. Na secção Metadados, clique em Adicionar item.

    1. No campo Chave, introduza enable-oslogin.
    2. No campo Valor, introduza TRUE.
  5. Clique em Adicionar item.

    1. No campo Chave, introduza enable-oslogin-certificates.
    2. No campo Valor, introduza TRUE.
  6. Clique em Guardar.

gcloud

Para exigir certificados SSH para todas as ligações a uma única VM, use o comando gcloud compute instances add-metadata para definir enable-oslogin=TRUE e enable-oslogin-certificates=TRUE nos metadados da instância:

gcloud compute instances add-metadata VM_NAME \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Substitua VM_NAME pelo nome da sua VM.

Estabeleça ligação a uma VM através de um certificado SSH

Depois de configurar o Início de sessão do SO para exigir certificados SSH, as ligações SSH a partir da consola e da CLI gcloud usam certificados SSH por predefinição. Google Cloud Se não quiser configurar o início de sessão no SO para exigir certificados, mas quiser usar certificados para se ligar a VMs, tem de se ligar através de ferramentas de terceiros.

Consola

Ligue-se às VMs através do SSH no navegador a partir da Google Cloud consola, fazendo o seguinte:

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

    SSH button next to instance name.

gcloud

Use o comando gcloud beta compute ssh para estabelecer ligação a uma VM através de um certificado:

gcloud beta compute ssh VM_NAME

Substitua VM_NAME pelo nome da MV à qual quer estabelecer ligação.

Ferramentas de terceiros

Para usar um certificado SSH com um cliente SSH de terceiros, faça o seguinte:

  1. Crie uma chave SSH se ainda não tiver uma.

  2. Assine a sua chave pública de SSH através do método projects.locations.signSshPublicKey:

    POST https://oslogin.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
     "compute_instance": "COMPUTE_INSTANCE",
     "service_account": "SERVICE_ACCOUNT"
    }
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto que contém a VM à qual quer estabelecer ligação
    • LOCATION: a região onde se encontra a VM à qual quer estabelecer ligação
    • PUBLIC_KEY: o conteúdo do ficheiro da chave pública de SSH
    • COMPUTE_INSTANCE: a instância do Compute Engine à qual se ligar, no formato projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID.
    • SERVICE_ACCOUNT: a conta de serviço anexada à instância. Elimine este campo se a instância não tiver uma conta de serviço anexada.
  3. Copie o certificado SSH do resultado do projects.locations.signSshPublicKey método e guarde o conteúdo num novo ficheiro.

  4. Defina autorizações no ficheiro de certificado SSH executando o seguinte comando:

    sudo chmod 600 FILE_NAME
    

    Substitua FILE_NAME pelo nome do ficheiro.

  5. Estabeleça ligação à VM através do seguinte comando:

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

    Substitua o seguinte:

    • PATH_TO_PRIVATE_KEY: o caminho para o ficheiro de chave SSH privada.
    • PATH_TO_SSH_CERTIFICATE: o caminho para o ficheiro de certificado SSH.
    • USERNAME: o seu nome de utilizador do Início de sessão do SO
    • EXTERNAL_IP: o endereço IP externo da VM.

Resolução de problemas

Se não conseguir estabelecer ligação a VMs que configurou para exigirem certificados SSH, isso pode dever-se ao seguinte:

O que se segue?