Este documento descreve como solucionar problemas de login do sistema operacional usando o servidor de metadados. Para obter informações sobre como configurar o login do sistema operacional ou obter instruções passo a passo, consulte Configurando o login do sistema operacional .
Você pode consultar o servidor de metadados em uma instância de máquina virtual (VM). Para obter mais informações, consulte Armazenando e recuperando metadados de instância .
Antes de começar
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- Restaure a conta excluída .
- Remova as informações POSIX da conta antes de excluí-la.
Visualize seu perfil de login do sistema operacional executando o comando
gcloud compute os-login describe-profile
:gcloud compute os-login describe-profile
A saída é semelhante a esta:
name: '00000000000000' posixAccounts: ... sshPublicKeys: ...: fingerprint: ... key: | ssh-rsa AAAAB3NzaC1yc2... name: ... ...
Revise a saída para identificar quaisquer chaves SSH não utilizadas.
Remova todas as chaves não utilizadas da saída usando o comando
gcloud compute os-login ssh-keys remove
:gcloud compute os-login ssh-keys remove --key=KEY
Substitua
KEY
pela impressão digital das chaves ou pelo conjunto de chaves.- Implemente um mecanismo de nova tentativa no código do aplicativo. Para obter mais informações, consulte:
- Reutilize conexões SSH existentes.
- Envie comandos em lotes para reduzir conexões SSH e consultas de metadados de login do sistema operacional.
Consulte o perfil do usuário para obter o valor do campo
name
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
Na saída, anote o
name
.Execute o seguinte comando
login
usando o valor dename
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=LOGIN_NAME" -H "Metadata-Flavor: Google"
- Saiba mais sobre o login do sistema operacional .
- Saiba como as conexões SSH com VMs Linux funcionam no Compute Engine.
- Para obter instruções passo a passo, revise um dos seguintes:
- Revise Gerenciando o login do sistema operacional em uma organização
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Mensagens de erro comuns
A seguir estão exemplos de erros comuns que você pode encontrar ao usar o login do sistema operacional.
Não é possível encontrar o nome do grupo
Em algumas VMs que usam o Login do SO, você poderá receber a seguinte mensagem de erro após a conexão ser estabelecida:
/usr/bin/id: cannot find name for group ID 123456789
Ignore esta mensagem de erro. Este erro não afeta suas VMs.
Falha ao obter grupos
Você poderá ver logs semelhantes aos seguintes ao criar VMs:
Dec 10 22:31:05 instance-1 google_oslogin_nss_cache[381]: oslogin_cache_refresh[381]: Refreshing group entry cache Dec 10 22:31:05 instance-1 google_oslogin_nss_cache[381]: oslogin_cache_refresh[381]: Failure getting groups, quitting
Esses logs indicam que sua organização não tem grupos Linux de Login do SO configurados. Ignore essas mensagens.
Falha na pré-condição
Você poderá ver um erro semelhante ao seguinte ao se conectar à VM usando SSH:
ERROR: (gcloud.compute.ssh) FAILED_PRECONDITION: The specified username or UID is not unique within given system ID.
Este erro ocorre quando o Login do SO tenta gerar um nome de usuário que já existe em uma organização. Isso é comum quando uma conta de usuário é excluída e um novo usuário com o mesmo endereço de e-mail é criado logo em seguida. Depois que uma conta de usuário é excluída, leva até 48 horas para remover as informações POSIX do usuário.
Para resolver esse problema, siga um destes procedimentos:
Argumento inválido
Você poderá ver erros semelhantes aos seguintes ao se conectar a uma VM usando SSH ou usar SCP para transferir arquivos:
ERROR: (gcloud.compute.ssh) INVALID_ARGUMENT: Login profile size exceeds 32 KiB. Delete profile values to make additional space.
ERROR: (gcloud.compute.scp) INVALID_ARGUMENT: Login profile size exceeds 32 KiB. Delete profile values to make additional space.
Para resolver esses erros, faça o seguinte:
Para evitar que esse problema ocorra no futuro, adicione um prazo de validade para chaves SSH . As chaves expiradas são removidas automaticamente do seu perfil de login 48 horas após a expiração ou quando você adiciona uma nova chave ao seu perfil.
Código de resposta HTTP: 429
Você poderá ver o seguinte erro ao tentar se conectar a uma VM usando SSH:
Failed to validate organization user USERNAME has login permission, got HTTP response code: 429
Esse problema é causado pelo limite de taxa do servidor de metadados de 100 consultas por segundo por instância de máquina virtual. Este limite não pode ser ajustado. Para resolver esse problema, aguarde alguns segundos e tente novamente a conexão.
Para evitar esse problema no futuro, tente o seguinte:
Entradas de metadados de login do sistema operacional padrão
O Compute Engine define um conjunto de entradas de metadados padrão que fornecem informações de login do sistema operacional. Os metadados padrão são sempre definidos e configurados pelo servidor. As chaves de metadados padrão diferenciam maiúsculas de minúsculas.
A tabela a seguir descreve as entradas que você pode consultar.
Em relação a http://metadata.google.internal/computeMetadata/v1/
Entrada de metadados Descrição project/attributes/enable-oslogin
Verifica se o login do SO está ativado no projeto atual do Google Cloud. instance/attributes/enable-oslogin
Verifica se o Login do SO está habilitado na VM atual. oslogin/users/
Recupera informações de perfil para usuários de login do sistema operacional. Você pode passar parâmetros de consulta como username
,uid
,pagesize
epagetoken
.oslogin/authorize/
Recupera configurações de login ou permissão de nível administrativo para um usuário de login do sistema operacional.
Para verificar uma permissão, você deve especificar o parâmetro de consulta
policy
. O valor do parâmetro de política deve ser definido comologin
(para verificar a permissão de login) ouadminLogin
(para verificar o acesso sudo).Verificando se o Login do SO está configurado
Use o console do Google Cloud ou a CLI do Google Cloud para consultar metadados e determinar se o Login do SO está ativado. O Login do SO é habilitado quando a chave de metadados
enable-oslogin
é definida comoTRUE
nos metadados do projeto ou da instância. Se os metadados da instância e do projeto forem definidos, o valor definido nos metadados da instância terá precedência.Visualizando usuários de Login do SO
Para visualizar as informações de perfil de vários usuários, você precisa especificar os parâmetros
pagesize
epagetoken
. Substitua opagesize
epagetoken
pelo valor numérico necessário.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=PAGE_SIZE& pagetoken=PAGE_TOKEN" -H "Metadata-Flavor: Google"
Por exemplo, para definir o
pagesize
como1
e opagetoken
como0
, execute o seguinte comando:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=1&pagetoken=0" -H "Metadata-Flavor: Google"
Na maioria das distribuições, você também pode executar o comando Unix
getent passwd
para recuperar as entradas de senha dos usuários da organização.Visualizando um usuário específico de login do sistema operacional
Para visualizar as informações de perfil de um usuário específico em sua VM, execute o seguinte comando:
curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=USERNAME" -H "Metadata-Flavor: Google"
Substitua
USERNAME
pelo nome de usuário do usuário que você deseja consultar.Por exemplo, você pode executar uma solicitação para procurar o usuário
user_example_com
. O comando e a saída a seguir mostram formatação adicionada para melhorar a legibilidade.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
A saída é semelhante à seguinte:
{ "loginProfiles": [{ "name": "12345678912345", "posixAccounts": [{ "primary": true, "username": "user_example_com", "uid": "123451", "gid": "123451", "homeDirectory": "/home/user_example_com", "operatingSystemType": "LINUX" }], "sshPublicKeys": { "204c4b4fb...": { "key": "ssh-rsa AAAAB3Nz...", "fingerprint": "204c4b4fb..." } } }] }
Na maioria das distribuições, você também pode executar comandos Unix, como
getent passwd username
ougetent passwd uid
para recuperar informações de perfil.Para recuperar as chaves SSH de um usuário, você também pode executar
/usr/bin/google_authorized_keys USERNAME
. Se nenhuma chave for retornada, o usuário poderá não ter as permissões necessárias para fazer login na VM.Verificando permissões de login
Para visualizar as permissões de login e de nível administrativo, você deve fornecer os parâmetros de consulta
policy=login&email= LOGIN_NAME
.Por exemplo, você pode consultar as permissões de login do usuário
user_example_com
que foi visualizado na seção anterior :curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=12345678912345" -H "Metadata-Flavor: Google"
A saída do comando indica que o usuário está autorizado a fazer login na VM:
{"success":true}
Verificando se sua VM tem uma conta de serviço
Você pode consultar o servidor de metadados para encontrar a conta de serviço associada à sua VM. Na sua VM, execute o seguinte comando:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"
A saída é semelhante à seguinte:
12345-sa@developer.gserviceaccount.com/ default/
Se nenhuma conta de serviço for encontrada, a saída ficará em branco.
O que vem a seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-04-21 UTC.
-