Este documento descreve como resolver problemas de início de sessão no SO através do servidor de metadados. Para obter informações sobre a configuração do Início de sessão do SO ou instruções passo a passo, consulte o artigo Configurar o Início de sessão do SO.
Pode consultar o servidor de metadados a partir de uma instância de máquina virtual (VM). Para mais informações, consulte o artigo Armazenar e obter metadados de instâncias.
Antes de começar
-
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
-
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.
- Set a default region and zone.
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. 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.
Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.
Mensagens de erro comuns
Seguem-se exemplos de erros comuns que pode encontrar quando usa o início de sessão do SO.
Não é possível encontrar o nome do grupo
Em algumas VMs que usam o Início de sessão no SO, pode receber a seguinte mensagem de erro após a ligação ser estabelecida:
/usr/bin/id: cannot find name for group ID 123456789
Ignore esta mensagem de erro. Este erro não afeta as suas VMs.
Falha ao obter grupos
Pode ver registos semelhantes aos seguintes quando cria 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
Estes registos indicam que a sua organização não tem grupos Linux de início de sessão no SO configurados. Ignore estas mensagens.
Falha na pré-condição
Pode ver um erro semelhante ao seguinte quando se liga à VM através de SSH:
ERROR: (gcloud.compute.ssh) FAILED_PRECONDITION: The specified username or UID is not unique within given system ID.
Este erro ocorre quando o início de sessão do SO tenta gerar um nome de utilizador que já existe numa organização. Isto é comum quando uma conta de utilizador é eliminada e é criado um novo utilizador com o mesmo endereço de email pouco depois. Após a eliminação de uma conta de utilizador, a remoção das informações POSIX do utilizador demora até 48 horas.
Para resolver este problema, faça uma das seguintes ações:
- Restaure a conta eliminada.
- Remova as informações POSIX da conta antes de a eliminar.
Argumento inválido
Pode ver erros semelhantes aos seguintes quando se liga a uma VM através de SSH ou usa SCP para transferir ficheiros:
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 estes erros, faça o seguinte:
Veja o seu perfil do Início de sessão do SO executando o comando
gcloud compute os-login describe-profile
:gcloud compute os-login describe-profile
O resultado tem um aspeto semelhante ao seguinte:
name: '00000000000000' posixAccounts: ... sshPublicKeys: ...: fingerprint: ... key: | ssh-rsa AAAAB3NzaC1yc2... name: ... ...
Reveja o resultado para identificar chaves SSH não usadas.
Remova todas as chaves não usadas da saída através do comando
gcloud compute os-login ssh-keys remove
:gcloud compute os-login ssh-keys remove --key=KEY
Substitua
KEY
pela impressão digital da chave ou pela string da chave.
Para evitar que este problema ocorra no futuro, adicione um prazo de validade para as chaves SSH. As chaves expiradas são removidas automaticamente do seu perfil de início de sessão 48 horas após a expiração ou quando adiciona uma nova chave ao seu perfil.
Código da resposta HTTP: 429
Pode ver o seguinte erro quando tenta estabelecer ligação a uma VM através de SSH:
Failed to validate organization user USERNAME has login permission, got HTTP response code: 429
Este problema é causado pelo limite de taxa do servidor de metadados de 100 consultas por segundo por instância de máquina virtual. Não é possível ajustar este limite. Para resolver este problema, aguarde alguns segundos e, em seguida, tente novamente a ligação.
Para evitar este problema no futuro, experimente o seguinte:
- Implemente um mecanismo de repetição no código da aplicação. Para mais informações, consulte:
- Reutilizar ligações SSH existentes.
- Envie comandos em lotes para reduzir as ligações SSH e as consultas de metadados do início de sessão no SO.
Entradas de metadados do Início de sessão do SO predefinidas
O Compute Engine define um conjunto de entradas de metadados predefinidas que servem informações de início de sessão do SO. Os metadados predefinidos são sempre definidos e configurados pelo servidor. As chaves de metadados predefinidas são sensíveis a maiúsculas e minúsculas.
A tabela seguinte descreve as entradas que pode consultar.
Relativo a http://metadata.google.internal/computeMetadata/v1/
Entrada de metadados Descrição project/attributes/enable-oslogin
Verifica se o início de sessão no SO está ativado no Google Cloud projeto atual. instance/attributes/enable-oslogin
Verifica se o início de sessão do SO está ativado na VM atual. oslogin/users/
Obtém informações do perfil para utilizadores do Início de sessão do SO. Pode transmitir parâmetros de consulta, como username
,uid
,pagesize
epagetoken
.oslogin/authorize/
Obtém as definições de autorização ao nível administrativo ou de início de sessão para um utilizador do Início de sessão do SO.
Para verificar uma autorização, tem de especificar o parâmetro
policy
query. O valor do parâmetro de política tem de ser definido comologin
(para verificar a autorização de início de sessão) ouadminLogin
(para verificar o acesso sudo).A verificar se o Início de sessão do SO está configurado
Use a Google Cloud consola ou a Google Cloud CLI para consultar os metadados para determinar se o Início de sessão no SO está ativado. O início de sessão no SO é ativado 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 estiverem definidos, o valor definido nos metadados da instância tem prioridade.Visualizar utilizadores do Início de sessão do SO
Para ver as informações do perfil de vários utilizadores, tem de especificar os parâmetros
pagesize
epagetoken
. Substituapagesize
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, também pode executar o comando Unix
getent passwd
para obter as entradas de palavras-passe dos utilizadores da organização.Ver um utilizador de início de sessão do SO específico
Para ver as informações do perfil de um utilizador específico na 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 utilizador do utilizador que quer consultar.Por exemplo, pode fazer um pedido para procurar o utilizador
user_example_com
. O comando e o resultado seguintes mostram a formatação adicionada para melhorar a legibilidade.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
O resultado é semelhante ao 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, também pode executar comandos Unix, como
getent passwd username
ougetent passwd uid
, para obter informações do perfil.Para obter as chaves SSH de um utilizador, também pode executar o comando
/usr/bin/google_authorized_keys USERNAME
. Se não forem devolvidas chaves, o utilizador pode não ter as autorizações necessárias para iniciar sessão na VM.A verificar as autorizações de início de sessão
Para ver as autorizações de início de sessão e ao nível administrativo, tem de fornecer os parâmetros de consulta
policy=login&email=LOGIN_NAME
.Consulte o perfil do utilizador para obter o valor do campo
name
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
No resultado, tome nota do
name
.Execute o seguinte comando
login
com o valor dename
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=LOGIN_NAME" -H "Metadata-Flavor: Google"
Por exemplo, pode consultar as autorizações de início de sessão do utilizador
user_example_com
que foi visto na secção anterior:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=12345678912345" -H "Metadata-Flavor: Google"
O resultado do comando indica que o utilizador tem autorização para iniciar sessão na VM:
{"success":true}
Verificar se a sua VM tem uma conta de serviço
Pode consultar o servidor de metadados para encontrar a conta de serviço associada à sua VM. Na VM, execute o seguinte comando:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"
O resultado é semelhante ao seguinte:
12345-sa@developer.gserviceaccount.com/ default/
Se não for encontrada nenhuma conta de serviço, o resultado fica em branco.
O que se segue?
- Saiba mais acerca do início de sessão no SO.
- Saiba como funcionam as ligações SSH a VMs Linux no Compute Engine.
- Para ver instruções passo a passo, reveja uma das seguintes opções:
- Reveja o artigo Gerir o Início de sessão do SO numa organização
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-09-19 UTC.
-