Ce document explique comment résoudre les problèmes liés à OS Login à l'aide du serveur de métadonnées. Pour plus d'informations sur la configuration d'OS Login ou pour obtenir des instructions détaillées, consultez la section Configurer OS Login.
Vous pouvez interroger le serveur de métadonnées à partir d'une instance de machine virtuelle (VM). Pour en savoir plus, consultez la page Stocker et récupérer les métadonnées d'instances.
Avant de commencer
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :
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.
- Restaurez le compte supprimé.
- Supprimez les informations POSIX du compte avant de le supprimer.
Affichez votre profil OS Login en exécutant la commande
gcloud compute os-login describe-profile
:gcloud compute os-login describe-profile
Le résultat ressemble à ceci :
name: '00000000000000' posixAccounts: ... sshPublicKeys: ...: fingerprint: ... key: | ssh-rsa AAAAB3NzaC1yc2... name: ... ...
Examinez le résultat pour identifier les clés SSH inutilisées.
Supprimez toutes les clés inutilisées de la sortie à l'aide de la commande
gcloud compute os-login ssh-keys remove
:gcloud compute os-login ssh-keys remove --key=KEY
Remplacez
KEY
par l'empreinte des clés ou par la chaîne de clé.Interrogez le profil utilisateur pour obtenir la valeur du champ
name
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
Dans le résultat, notez la valeur du champ
name
.Exécutez la commande
login
suivante en utilisant la valeur du champname
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=LOGIN_NAME" -H "Metadata-Flavor: Google"
- Apprenez-en plus sur OS Login.
- Découvrez comment les connexions SSH aux VM Linux fonctionnent sur Compute Engine.
- Pour obtenir des instructions détaillées, consultez l'une des procédures suivantes :
- Gérer OS Login dans une organisation
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.
Messages d'erreur fréquents
Vous trouverez ci-dessous des exemples d'erreurs courantes que vous pouvez rencontrer en utilisant OS Login.
Nom du groupe introuvable
Sur certaines VM utilisant OS Login, il est possible que vous receviez le message d'erreur suivant une fois que la connexion est établie :
/usr/bin/id: cannot find name for group ID 123456789
Ignorez ce message d'erreur. Cette erreur n'affecte pas vos VM.
Échec de l'obtention des groupes
Lorsque vous créez des VM, des journaux semblables à ce qui suit peuvent s'afficher :
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
Ces journaux indiquent que votre organisation n'a pas de groupes OS Login Linux configurés. Ignorez ces messages.
Condition préalable non remplie
Une erreur semblable à celle-ci peut s'afficher lorsque vous vous connectez à la VM à l'aide de SSH :
ERROR: (gcloud.compute.ssh) FAILED_PRECONDITION: The specified username or UID is not unique within given system ID.
Cette erreur se produit lorsque OS Login tente de générer un nom d'utilisateur qui existe déjà dans une organisation. Cette situation est fréquente lorsqu'un compte utilisateur est supprimé et qu'un nouvel utilisateur associé à la même adresse e-mail est créé peu de temps après. Une fois le compte utilisateur supprimé, la suppression des informations POSIX de l'utilisateur peut prendre jusqu'à 48 heures.
Pour résoudre ce problème, effectuez l'une des opérations suivantes :
Argument incorrect
Vous pouvez rencontrer des erreurs semblables à ce qui suit lorsque vous vous connectez à une VM à l'aide de SSH ou utilisez SCP pour transférer des fichiers :
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.
Pour résoudre ces erreurs, procédez comme suit :
Pour éviter ce problème à l'avenir, ajoutez un délai d'expiration pour les clés SSH. Les clés expirées sont automatiquement supprimées de votre profil de connexion 48 heures après l'expiration ou lorsque vous ajoutez une nouvelle clé à votre profil.
Entrées par défaut de métadonnées de connexion au système d'exploitation
Compute Engine définit un ensemble d'entrées de métadonnées par défaut qui fournit des informations de connexion au système d'exploitation. Les métadonnées par défaut sont toujours définies et configurées par le serveur. Les clés de métadonnées par défaut sont sensibles à la casse.
Le tableau suivant décrit les entrées que vous pouvez interroger.
Par rapport à http://metadata.google.internal/computeMetadata/v1/
Entrée de métadonnées Description project/attributes/enable-oslogin
Vérifie si la connexion au système d'exploitation est activée sur le projet Google Cloud en cours. instance/attributes/enable-oslogin
Vérifie si la connexion au système d'exploitation est activée sur la VM actuelle. oslogin/users/
Récupère les informations de profil des utilisateurs d'OS Login. Vous pouvez transmettre des paramètres de requête tels que username
,uid
,pagesize
etpagetoken
.oslogin/authorize/
Récupère les paramètres d'autorisation de connexion ou d'administration pour un utilisateur d'OS Login.
Pour vérifier une autorisation, vous devez spécifier le paramètre de requête
policy
. La valeur du paramètre de règle doit êtrelogin
(pour vérifier l'autorisation de connexion) ouadminLogin
(pour vérifier l'accès sudo).Vérifier si OS Login est configuré
Interrogez les métadonnées à l'aide de la console Google Cloud ou de Google Cloud CLI pour déterminer si la connexion au système d'exploitation est activée. OS Login est activé lorsque la clé de métadonnées
enable-oslogin
est définie surTRUE
dans les métadonnées d'un projet ou d'une instance. Si les métadonnées d'instance et de projet sont toutes deux définies, les métadonnées d'instance sont prioritaires.Afficher les utilisateurs d'OS Login
Pour afficher les informations de profil de plusieurs utilisateurs, vous devez spécifier les paramètres
pagesize
etpagetoken
. Remplacezpagesize
etpagetoken
par la valeur numérique requise.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=PAGE_SIZE& pagetoken=PAGE_TOKEN" -H "Metadata-Flavor: Google"
Par exemple, pour définir
pagesize
sur1
etpagetoken
sur0
, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=1&pagetoken=0" -H "Metadata-Flavor: Google"
Sur la plupart des distributions, vous pouvez également exécuter la commande Unix
getent passwd
afin de récupérer les entrées de mot de passe des utilisateurs de l'organisation.Afficher un utilisateur d'OS Login spécifique
Pour afficher les informations de profil d'un utilisateur spécifique sur votre VM, exécutez la commande ci-dessous.
curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=USERNAME" -H "Metadata-Flavor: Google"
Remplacez
USERNAME
par le nom d'utilisateur sur lequel vous souhaitez effectuer la requête.Par exemple, vous pouvez effectuer une requête pour rechercher l'utilisateur
user_example_com
. La commande et le résultat ci-dessous ont été mis en forme pour une meilleure lisibilité.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
{ "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..." } } }] }
Sur la plupart des distributions, vous pouvez également exécuter des commandes Unix telles que
getent passwd username
ougetent passwd uid
pour récupérer les informations de profil.Pour récupérer les clés SSH d'un utilisateur, vous pouvez également exécuter
/usr/bin/google_authorized_keys USERNAME
. Si aucune clé n'est renvoyée, il est possible que l'utilisateur ne dispose pas des autorisations requises pour se connecter à la VM.Vérifier les autorisations de connexion
Pour afficher les autorisations de connexion et d'administration, vous devez fournir les paramètres de requête
policy=login&email=LOGIN_NAME
.Par exemple, vous pouvez interroger les autorisations de connexion de l'utilisateur
user_example_com
affichées dans la section précédente.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=12345678912345" -H "Metadata-Flavor: Google"
Le résultat de la commande indique que l'utilisateur est autorisé à se connecter à la VM :
{"success":true}
Vérifier si votre VM dispose d'un compte de service
Vous pouvez interroger le serveur de métadonnées pour trouver le compte de service associé à votre VM. Sur votre VM, exécutez la commande suivante :
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
12345-sa@developer.gserviceaccount.com/ default/
Si aucun compte de service n'est trouvé, le résultat est vide.
Étape suivante
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/11/15 (UTC).
-