En este documento se describe cómo solucionar problemas de inicio de sesión del SO mediante el servidor de metadatos. Para obtener información sobre cómo configurar OS Login o instrucciones detalladas, consulta Configurar OS Login.
Puedes consultar el servidor de metadatos desde una instancia de máquina virtual (VM). Para obtener más información, consulta Almacenar y obtener metadatos de instancias.
Antes de empezar
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
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
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Mensajes de error habituales
A continuación se muestran ejemplos de errores habituales que pueden surgir al usar el inicio de sesión del SO.
No se encuentra el nombre del grupo
En algunas máquinas virtuales que usan Inicio de sesión del SO, es posible que recibas el siguiente mensaje de error después de establecer la conexión:
/usr/bin/id: cannot find name for group ID 123456789
Ignora este mensaje de error. Este error no afecta a tus VMs.
Failure getting groups
Es posible que veas registros similares a los siguientes al crear máquinas virtuales:
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
Estos registros indican que tu organización no tiene configurados grupos de Linux de inicio de sesión con SO. Ignora estos mensajes.
No se cumple la condición previa
Es posible que veas un error similar al siguiente cuando te conectes a la VM mediante SSH:
ERROR: (gcloud.compute.ssh) FAILED_PRECONDITION: The specified username or UID is not unique within given system ID.
Este error se produce cuando Inicio de sesión del SO intenta generar un nombre de usuario que ya existe en una organización. Esto suele ocurrir cuando se elimina una cuenta de usuario y, poco después, se crea una nueva con la misma dirección de correo. Una vez que se elimina una cuenta de usuario, se tarda hasta 48 horas en eliminar la información POSIX del usuario.
Para solucionar este problema, haz una de las siguientes acciones:
- Restaura la cuenta eliminada.
- Quita la información POSIX de la cuenta antes de eliminarla.
Argumento no válido
Es posible que veas errores similares a los siguientes cuando te conectes a una VM mediante SSH o uses SCP para transferir archivos:
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 solucionar estos errores, siga estos pasos:
Para ver tu perfil de OS Login, ejecuta el comando
gcloud compute os-login describe-profile
:gcloud compute os-login describe-profile
El resultado es similar al siguiente:
name: '00000000000000' posixAccounts: ... sshPublicKeys: ...: fingerprint: ... key: | ssh-rsa AAAAB3NzaC1yc2... name: ... ...
Revisa el resultado para identificar las claves SSH que no se utilicen.
Quita las claves que no utilices del resultado con el comando
gcloud compute os-login ssh-keys remove
:gcloud compute os-login ssh-keys remove --key=KEY
Sustituye
KEY
por la huella digital de la clave o la cadena de la clave.
Para evitar que se produzca este problema en el futuro, añade un tiempo de vencimiento a las claves SSH. Las claves caducadas se eliminan automáticamente de tu perfil de inicio de sesión 48 horas después de su caducidad o cuando añades una nueva clave a tu perfil.
Código de respuesta HTTP: 429
Es posible que veas el siguiente error al intentar conectarte a una VM mediante SSH:
Failed to validate organization user USERNAME has login permission, got HTTP response code: 429
Este problema se debe al límite de frecuencia del servidor de metadatos, que es de 100 consultas por segundo por instancia de máquina virtual. Este límite no se puede ajustar. Para solucionar este problema, espera unos segundos y vuelve a intentar la conexión.
Para evitar que vuelva a ocurrir, prueba lo siguiente:
- Implementa un mecanismo de reintento en el código de la aplicación. Para obtener más información, consulta:
- Reutilizar las conexiones SSH existentes.
- Envía comandos en lotes para reducir las conexiones SSH y las consultas de metadatos de inicio de sesión del SO.
Entradas de metadatos predeterminadas de OS Login
Compute Engine define un conjunto de entradas de metadatos predeterminadas que proporcionan información de inicio de sesión del SO. El servidor siempre define y establece los metadatos predeterminados. Las claves de metadatos predeterminadas distinguen entre mayúsculas y minúsculas.
En la siguiente tabla se describen las entradas que puedes consultar.
En relación con http://metadata.google.internal/computeMetadata/v1/
Entrada de metadatos Descripción project/attributes/enable-oslogin
Comprueba si el inicio de sesión del SO está habilitado en el Google Cloud proyecto actual. instance/attributes/enable-oslogin
Comprueba si OS Login está habilitado en la VM actual. oslogin/users/
Obtiene información del perfil de los usuarios que inician sesión en el SO. Puede enviar parámetros de consulta como username
,uid
,pagesize
ypagetoken
.oslogin/authorize/
Obtiene la configuración de permisos de nivel de inicio de sesión o de administrador de un usuario de inicio de sesión del SO.
Para comprobar un permiso, debe especificar el parámetro de consulta
policy
. El valor del parámetro de política debe serlogin
(para comprobar si se tiene permiso de inicio de sesión) oadminLogin
(para comprobar si se tiene acceso sudo).Comprobar si OS Login está configurado
Usa la Google Cloud consola o Google Cloud CLI para consultar los metadatos y determinar si OS Login está habilitado. OS Login se habilita cuando la clave de metadatos
enable-oslogin
se define comoTRUE
en los metadatos del proyecto o de la instancia. Si se definen los metadatos de la instancia y del proyecto, tiene prioridad el valor definido en los metadatos de la instancia.Ver usuarios de OS Login
Para ver la información de perfil de varios usuarios, debe especificar los parámetros
pagesize
ypagetoken
. Sustituyepagesize
ypagetoken
por el valor numérico que corresponda.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=PAGE_SIZE& pagetoken=PAGE_TOKEN" -H "Metadata-Flavor: Google"
Por ejemplo, para definir
pagesize
como1
ypagetoken
como0
, ejecuta el siguiente comando:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=1&pagetoken=0" -H "Metadata-Flavor: Google"
En la mayoría de las distribuciones, también puedes ejecutar el comando de Unix
getent passwd
para obtener las entradas de contraseñas de los usuarios de la organización.Ver un usuario específico de OS Login
Para ver la información del perfil de un usuario específico en tu VM, ejecuta el siguiente comando:
curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=USERNAME" -H "Metadata-Flavor: Google"
Sustituye
USERNAME
por el nombre de usuario del usuario cuya información quieras consultar.Por ejemplo, puedes hacer una solicitud para buscar al usuario
user_example_com
. El siguiente comando y su resultado muestran el formato añadido para mejorar la legibilidad.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
El resultado debería ser similar al siguiente:
{ "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..." } } }] }
En la mayoría de las distribuciones, también puedes ejecutar comandos de Unix, como
getent passwd username
ogetent passwd uid
, para obtener información del perfil.Para obtener las claves SSH de un usuario, también puedes ejecutar
/usr/bin/google_authorized_keys USERNAME
. Si no se devuelve ninguna clave, es posible que el usuario no tenga los permisos necesarios para iniciar sesión en la VM.Comprobando los permisos de inicio de sesión
Para ver los permisos de nivel de inicio de sesión y de administrador, debes proporcionar los parámetros de consulta
policy=login&email=LOGIN_NAME
.Consulta el perfil de usuario para obtener el valor del campo
name
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
En el resultado, anota el
name
.Ejecuta el siguiente comando
login
con el valor dename
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=LOGIN_NAME" -H "Metadata-Flavor: Google"
Por ejemplo, puedes consultar los permisos de inicio de sesión del usuario
user_example_com
que se ha visto en la sección anterior:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=12345678912345" -H "Metadata-Flavor: Google"
El resultado del comando indica que el usuario está autorizado para iniciar sesión en la VM:
{"success":true}
Comprobar si tu máquina virtual tiene una cuenta de servicio
Puedes consultar el servidor de metadatos para encontrar la cuenta de servicio asociada a tu VM. En tu máquina virtual, ejecuta el siguiente comando:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"
El resultado debería ser similar al siguiente:
12345-sa@developer.gserviceaccount.com/ default/
Si no se encuentra ninguna cuenta de servicio, el resultado estará en blanco.
Siguientes pasos
- Consulta más información sobre OS Login.
- Consulta cómo funcionan las conexiones SSH a máquinas virtuales Linux en Compute Engine.
- Para ver instrucciones detalladas, consulta uno de los siguientes artículos:
- Consulta el artículo Gestionar OS Login en una organización.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-12 (UTC).
-