Neste documento, descrevemos como solucionar problemas de login do SO usando o servidor de metadados. Para informações sobre como configurar o Login do SO ou para instruções passo a passo, consulte Como configurar o Login do SO.
Você pode consultar o servidor de metadados de dentro de uma instância de máquina virtual (VM). Para mais informações, consulte Como armazenar e recuperar metadados de instância.
Antes de começar
-
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.
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Restaure a conta excluída.
- Remova as informações de POSIX da conta antes de excluí-la.
Veja seu perfil de login do SO executando o comando
gcloud compute os-login describe-profile
:gcloud compute os-login describe-profile
A resposta será semelhante a:
name: '00000000000000' posixAccounts: ... sshPublicKeys: ...: fingerprint: ... key: | ssh-rsa AAAAB3NzaC1yc2... name: ... ...
Revise a saída para identificar as chaves SSH não usadas.
Remova 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 pela string da chave.Consulte o perfil do usuário para ver 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 comando
login
a seguir 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 SO.
- Saiba como as conexões SSH com VMs do Linux funcionam no Compute Engine.
- Para instruções passo a passo, leia um dos seguintes procedimentos:
- Leia Como gerenciar o Login do SO 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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Mensagens de erro comuns
Veja a seguir exemplos de erros comuns que você pode encontrar ao usar o Login do SO.
Não é possível encontrar o nome do grupo
Ao usar o Login do SO em algumas VMs, talvez você receba a seguinte mensagem de erro após a conexão ser estabelecida:
/usr/bin/id: cannot find name for group ID 123456789
Ignore essa mensagem de erro. Esse erro não afeta as VMs.
Falha ao receber grupos
É possível que você veja registros 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 registros indicam que a organização não tem grupos do Login do SO do Linux configurados. Ignore essas mensagens.
Falha na pré-condição
Talvez você observe 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.
Esse 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, pode levar até 48 horas para as informações serem removidas do POSIX do usuário.
Para resolver esse problema, faça uma das seguintes ações:
Argumento inválido
Talvez você veja erros semelhantes aos seguintes ao se conectar a uma VM usando SSH ou 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 as chaves SSH. As chaves expiradas são removidas automaticamente do perfil de login 48 horas após a expiração ou quando você adiciona uma nova chave ao perfil.
Entradas de metadados de Login do SO padrão
O Compute Engine define um conjunto de entradas de metadados padrão que veiculam informações de Login do SO. Os metadados padrão sempre são definidos e configurados no servidor. As chaves de metadados padrão diferenciam maiúsculas de minúsculas.
A tabela a seguir descreve as entradas que você pode consultar.
Relativo 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á ativado na VM atual. oslogin/users/
Recupera informações de perfil para usuários do Login do SO. É possível transmitir parâmetros de consulta como username
,uid
,pagesize
epagetoken
.oslogin/authorize/
Recupera as configurações de permissão de login ou nível administrativo para um usuário de Login do SO.
Para verificar uma permissão, especifique o parâmetro de consulta
policy
. O valor do parâmetro de política precisa ser definido comologin
(para verificar a permissão de login) ouadminLogin
(para verificar o acesso ao sudo).Como verificar se o Login do SO está configurado
Use o console do Google Cloud ou a CLI do Google Cloud para consultar metadados de modo a determinar se o Login do SO está ativado. O login do 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 forem definidos, o valor definido nos metadados da instância terá precedência.Como visualizar usuários de Login do SO
Para visualizar as informações do perfil de vários usuários, você precisa 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
pagesize
como1
epagetoken
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 é possível executar o comando Unix
getent passwd
para recuperar as entradas de senha para usuários da organização.Como visualizar um usuário específico de login do SO
Para ver as informações de perfil de um usuário específico na VM, execute o comando a seguir:
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ê quer consultar.Por exemplo, é executar uma solicitação para procurar o usuário
user_example_com
. O comando e a saída a seguir mostram uma formatação adicional para melhorar a legibilidade.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
A resposta será semelhante a:
{ "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 é possível 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, também é possível executar
/usr/bin/google_authorized_keys USERNAME
. Se nenhuma chave for retornada, talvez o usuário não tenha as permissões necessárias para fazer login na VM.Como verificar as permissões de login
Para ver as permissões de login e nível administrativo, é necessário fornecer os parâmetros de consulta
policy=login&email=LOGIN_NAME
.Por exemplo, é possível 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 resposta ao comando indica que o usuário está autorizado a fazer login na VM:
{"success":true}
Como verificar se sua VM tem uma conta de serviço
É possível consultar o servidor de metadados para encontrar a conta de serviço associada à VM. Na VM, execute o seguinte comando:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"
A resposta será semelhante a:
12345-sa@developer.gserviceaccount.com/ default/
Se nenhuma conta de serviço for encontrada, a saída ficará em branco.
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 2024-09-24 UTC.
-