En este documento, se describe cómo solucionar problemas de Acceso al SO mediante el servidor de metadatos. Para obtener información sobre la configuración de Acceso al SO o si quieres obtener instrucciones paso a paso, consulta Configura Acceso al SO.
Puedes consultar el servidor de metadatos desde una instancia de máquina virtual (VM). Para obtener más información, consulta la sección sobre cómo almacenar y recuperar metadatos de instancias.
Antes de empezar
-
Configura la autenticación si aún no lo hiciste.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.
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.
- Restablece la cuenta borrada.
- Quita la información de POSIX de la cuenta antes de borrarla.
Para ver tu perfil de Acceso al SO, 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 usaron.
Quita las claves sin usar del resultado mediante el comando
gcloud compute os-login ssh-keys remove
:gcloud compute os-login ssh-keys remove --key=KEY
Reemplaza
KEY
por la huella digital de la clave o la string de clave.Consulta el perfil del 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, toma nota del
name
.Ejecuta el siguiente comando de
login
con el valor dename
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=LOGIN_NAME" -H "Metadata-Flavor: Google"
- Obtén más información sobre Acceso al SO.
- Obtén información sobre cómo funcionan las conexiones SSH a las VM de Linux en Compute Engine.
- Para obtener instrucciones paso a paso, consulta una de las siguientes opciones:
- Consulta esta página sobre cómo administrar el acceso a SO 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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas 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 pueden surgir cuando usas Acceso al SO.
No se puede encontrar el nombre del grupo
En algunas instancias que usan Acceso al 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 tus VMs.
Error en la obtención de grupos
Es posible que veas registros similares a los siguientes cuando crees 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
Estos registros indican que tu organización no tiene configurados grupos de Linux de Acceso al SO. Ignora estos mensajes.
Precondición con errores
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 el Acceso al SO intenta generar un nombre de usuario que ya existe dentro de una organización. Esto es común cuando se borra una cuenta de usuario y se crea un usuario nuevo con la misma dirección de correo electrónico poco después. Cuando se borra una cuenta de usuario, pueden pasar hasta 48 horas para que se quite la información POSIX del usuario.
Para solucionar este problema, realiza una de las siguientes acciones:
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 resolver estos errores, haz lo siguiente:
Para evitar que se produzca este problema en el futuro, agrega un plazo de vencimiento para las claves SSH. Las claves vencidas se quitan de forma automática de tu perfil de acceso 48 horas después del vencimiento o cuando agregas una clave nueva a tu perfil.
Entradas de metadatos predeterminados de Acceso al SO
Compute Engine define un conjunto de entradas de metadatos predeterminados que proporcionan información sobre el Acceso al 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.
Relativo a http://metadata.google.internal/computeMetadata/v1/
Entrada de metadatos Descripción project/attributes/enable-oslogin
Comprueba si el Acceso al SO está habilitado en el proyecto actual de Google Cloud. instance/attributes/enable-oslogin
Comprueba si el Acceso al SO está habilitado en la VM actual. oslogin/users/
Recupera información de perfil para los usuarios del Acceso al SO. Puedes pasar parámetros de consulta como username
,uid
,pagesize
ypagetoken
.oslogin/authorize/
Recupera la configuración de permisos de nivel administrativo o de acceso para un usuario del Acceso al SO.
Para verificar un permiso, debes especificar el parámetro de consulta
policy
. El valor del parámetro de política debe establecerse enlogin
(para verificar el permiso de acceso) oadminLogin
(para verificar el acceso sudo).Comprueba si el Acceso al SO está configurado
Usa la consola de Google Cloud o la CLI de Google Cloud para consultar los metadatos a fin de determinar si el Acceso al SO está habilitado. El Acceso al SO se habilita cuando la clave de metadatos
enable-oslogin
se configura comoTRUE
en los metadatos del proyecto o la instancia. Si se configuran los metadatos de la instancia y del proyecto, el valor establecido en los metadatos de la instancia tiene prioridad.Visualiza los usuarios del Acceso al SO
Para ver la información del perfil de varios usuarios, debes especificar los parámetros
pagesize
ypagetoken
. Reemplazapagesize
ypagetoken
por 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 configurar
pagesize
en1
ypagetoken
en0
, 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
getent passwd
de Unix para recuperar las entradas de contraseña de los usuarios de la organización.Visualiza un usuario específico del Acceso al SO
Para ver la información de 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"
Reemplaza
USERNAME
por el nombre de usuario del usuario que deseas consultar.Por ejemplo, puedes realizar una solicitud para buscar el usuario
user_example_com
. El siguiente comando y el resultado muestran el 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 puedes ejecutar comandos de Unix como
getent passwd username
ogetent passwd uid
para recuperar la información de perfil.Para recuperar las claves SSH de un usuario, también puedes ejecutar
/usr/bin/google_authorized_keys USERNAME
. Si no se muestran claves, es posible que el usuario no tenga los permisos necesarios para acceder a la VM.Comprueba los permisos de acceso
Para ver los permisos de nivel administrativo y de acceso, debes proporcionar los parámetros de consulta
policy=login&email=LOGIN_NAME
.Por ejemplo, puedes consultar los permisos de acceso 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 para acceder a la VM:
{"success":true}
Comprueba si tu VM tiene una cuenta de servicio
Puedes consultar el servidor de metadatos para encontrar la cuenta de servicio asociada con tu VM. En tu VM, ejecuta 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 una cuenta de servicio, el resultado está en blanco.
¿Qué sigue?
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-08-22 (UTC)
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema de traducción" },{ "type": "thumb-down", "id": "otherDown", "label":"Otro" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Fácil de comprender" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Resolvió mi problema" },{ "type": "thumb-up", "id": "otherUp", "label":"Otro" }] -