Este documento describe cómo solucionar problemas de inicio de sesión en el sistema operativo utilizando el servidor de metadatos. Para obtener información sobre cómo configurar el inicio de sesión en el sistema operativo o instrucciones paso a paso, consulte Configuración del inicio de sesión en el sistema operativo .
Puede consultar el servidor de metadatos desde una instancia de máquina virtual (VM). Para obtener más información, consulte Almacenamiento y recuperación de metadatos de instancia .
Antes de comenzar
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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
-
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.
- Restaurar la cuenta eliminada .
- Elimine la información POSIX de la cuenta antes de eliminarla.
Vea su perfil de inicio de sesión en el sistema operativo ejecutando 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: ... ...
Revise el resultado para identificar las claves SSH no utilizadas.
Elimina las claves no utilizadas de la salida usando el comando
gcloud compute os-login ssh-keys remove
:gcloud compute os-login ssh-keys remove --key=KEY
Reemplace
KEY
con la huella digital de las claves o la cadena de claves.- Implemente un mecanismo de reintento en el código de la aplicación. Para obtener más información, consulte:
- Reutilice las conexiones SSH existentes.
- Envíe comandos en lotes para reducir las conexiones SSH y las consultas de metadatos de inicio de sesión del sistema operativo.
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, tome nota del
name
.Ejecute el siguiente comando
login
utilizando el valor dename
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=LOGIN_NAME" -H "Metadata-Flavor: Google"
- Obtenga más información sobre el inicio de sesión en el sistema operativo .
- Descubra cómo funcionan las conexiones SSH a máquinas virtuales Linux en Compute Engine.
- Para obtener instrucciones paso a paso, revise uno de los siguientes:
- Revisar la gestión del inicio de sesión del sistema operativo en una organización
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de 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.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
Mensajes de error comunes
Los siguientes son ejemplos de errores comunes que puede encontrar al utilizar el inicio de sesión en el sistema operativo.
No puedo encontrar el nombre del grupo
En algunas máquinas virtuales que utilizan el inicio de sesión en el sistema operativo, es posible que reciba el siguiente mensaje de error una vez establecida la conexión:
/usr/bin/id: cannot find name for group ID 123456789
Ignore este mensaje de error. Este error no afecta a sus máquinas virtuales.
Fallo al conseguir grupos
Es posible que vea registros similares a los siguientes cuando crea 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 su organización no tiene configurados grupos de inicio de sesión del sistema operativo Linux. Ignora estos mensajes.
Condición previa fallida
Es posible que vea un error similar al siguiente cuando se conecta a la máquina virtual mediante SSH:
ERROR: (gcloud.compute.ssh) FAILED_PRECONDITION: The specified username or UID is not unique within given system ID.
Este error ocurre cuando OS Login intenta generar un nombre de usuario que ya existe dentro de una organización. Esto es común cuando se elimina una cuenta de usuario y poco después se crea un nuevo usuario con la misma dirección de correo electrónico. Después de eliminar una cuenta de usuario, se necesitan hasta 48 horas para eliminar la información POSIX del usuario.
Para resolver este problema, realice una de las siguientes acciones:
Argumento no válido
Es posible que vea errores similares a los siguientes cuando se conecta a una máquina virtual mediante SSH o utiliza 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 resolver estos errores, haga lo siguiente:
Para evitar que este problema ocurra en el futuro, agregue un tiempo de vencimiento para las claves SSH . Las claves caducadas se eliminan automáticamente de su perfil de inicio de sesión 48 horas después de su vencimiento o cuando agrega una nueva clave a su perfil.
Código de respuesta HTTP: 429
Es posible que vea el siguiente error cuando intente conectarse a una máquina virtual mediante SSH:
Failed to validate organization user USERNAME has login permission, got HTTP response code: 429
Este problema se debe al límite de velocidad del servidor de metadatos de 100 consultas por segundo por instancia de máquina virtual. Este límite no se puede ajustar. Para resolver este problema, espere unos segundos y luego vuelva a intentar la conexión.
Para evitar este problema en el futuro, intente lo siguiente:
Entradas de metadatos de inicio de sesión del sistema operativo predeterminadas
Compute Engine define un conjunto de entradas de metadatos predeterminadas que brindan información de inicio de sesión del sistema operativo. Los metadatos predeterminados siempre los define y establece el servidor. Las claves de metadatos predeterminadas distinguen entre mayúsculas y minúsculas.
La siguiente tabla describe las entradas que puede consultar.
Relativo a http://metadata.google.internal/computeMetadata/v1/
Entrada de metadatos Descripción project/attributes/enable-oslogin
Comprueba si el inicio de sesión del sistema operativo está habilitado en el proyecto actual de Google Cloud. instance/attributes/enable-oslogin
Comprueba si el inicio de sesión del sistema operativo está habilitado en la máquina virtual actual. oslogin/users/
Recupera información de perfil para usuarios de inicio de sesión del sistema operativo. Puede pasar parámetros de consulta como username
,uid
,pagesize
ypagetoken
.oslogin/authorize/
Recupera la configuración de permisos de inicio de sesión o de nivel administrativo para un usuario de inicio de sesión del sistema operativo.
Para comprobar un permiso, debe especificar el parámetro de consulta
policy
. El valor del parámetro de política debe establecerse enlogin
(para verificar el permiso de inicio de sesión) oadminLogin
(para verificar el acceso a sudo).Comprobando si el inicio de sesión del sistema operativo está configurado
Utilice la consola de Google Cloud o la CLI de Google Cloud para consultar metadatos y determinar si el inicio de sesión en el sistema operativo está habilitado. El inicio de sesión en el sistema operativo está habilitado cuando la clave de metadatos
enable-oslogin
está configurada enTRUE
en los metadatos del proyecto o de la instancia. Si se establecen metadatos de instancia y de proyecto, el valor establecido en los metadatos de instancia tiene prioridad.Visualización de usuarios que inician sesión en el sistema operativo
Para ver la información del perfil de varios usuarios, debe especificar los parámetros
pagesize
ypagetoken
. Reemplace elpagesize
ypagetoken
con el valor numérico requerido.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=PAGE_SIZE& pagetoken=PAGE_TOKEN" -H "Metadata-Flavor: Google"
Por ejemplo, para establecer el
pagesize
en1
y elpagetoken
en0
, ejecute 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 puede ejecutar el comando de Unix
getent passwd
para recuperar las entradas de contraseña de los usuarios de la organización.Ver un usuario de inicio de sesión de sistema operativo específico
Para ver la información del perfil de un usuario específico en su VM, ejecute el siguiente comando:
curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=USERNAME" -H "Metadata-Flavor: Google"
Reemplace
USERNAME
con el nombre de usuario del usuario que desea consultar.Por ejemplo, puede realizar una solicitud para buscar el usuario
user_example_com
. El siguiente comando y resultado muestran formato agregado para mejorar la legibilidad.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
El resultado es 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 puede ejecutar comandos de Unix como
getent passwd username
ogetent passwd uid
para recuperar información del perfil.Para recuperar las claves SSH de un usuario, también puede 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 máquina virtual.Comprobando los permisos de inicio de sesión
Para ver los permisos de inicio de sesión y de nivel administrativo, debe proporcionar los parámetros de consulta
policy=login&email= LOGIN_NAME
.Por ejemplo, puede consultar los permisos de inicio de sesión para el usuario
user_example_com
que se vio 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 a iniciar sesión en la VM:
{"success":true}
Comprobar si su VM tiene una cuenta de servicio
Puede consultar el servidor de metadatos para encontrar la cuenta de servicio asociada con su VM. En su VM, ejecute el siguiente comando:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"
El resultado es similar al siguiente:
12345-sa@developer.gserviceaccount.com/ default/
Si no se encuentra ninguna cuenta de servicio, el resultado está en blanco.
¿Qué sigue?
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-04-17 (UTC).
-