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 la sortie 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 ou la chaîne de clé.- Mettez en œuvre un mécanisme de nouvelle tentative dans le code de l'application. Pour en savoir plus, consultez:
- Réutiliser les connexions SSH existantes.
- Envoyez des commandes par lots pour réduire les connexions SSH et les requêtes de métadonnées OS Login.
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"
- État de la VM : vérifie si la VM est en cours d'exécution et dispose de ressources suffisantes (processeur, mémoire, stockage sur disque).
- Autorisations : garantit que vous disposez des autorisations IAM appropriées pour configurer des clés SSH.
- Paramètres de la VM : vérifie que les clés SSH et les autres métadonnées sont correctement configurées.
- Règles réseau : examine les règles de pare-feu pour confirmer que le trafic SSH est autorisé.
- Système d'exploitation invité : recherche les problèmes internes liés au système d'exploitation qui pourraient bloquer SSH.
- Terminez l'exécution, puis copiez la commande suivante.
- Ouvrez la console Google Cloud et activez Cloud Shell. Ouvrir la console Cloud
- Collez la commande copiée.
- Exécutez la commande
gcpdiag
, qui télécharge l'image Dockergcpdiag
, puis effectue des vérifications de diagnostic. Le cas échéant, suivez les instructions de sortie pour corriger les échecs de vérification. - Copiez et exécutez la commande suivante sur votre station de travail locale :
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- Exécutez la commande
gcpdiag
../gcpdiag runbook gce/ssh --project=PROJECT_ID \ --parameter name=VM_NAME \ --parameter zone=ZONE \ --parameter principal=PRINCIPAL \ --parameter tunnel_through_iap=IAP_ENABLED
- PROJECT_ID : ID du projet contenant la ressource.
- VM_NAME : nom de la VM cible au sein de votre projet.
- ZONE : zone dans laquelle se trouve votre VM cible.
- PRINCIPAL : utilisateur ou compte de service principal qui établit la connexion SSH. Pour l'authentification basée sur une clé, utilisez l'utilisateur authentifié par votre outil de ligne de commande Cloud Shell ou connecté à la console Google Cloud. Pour emprunter l'identité d'un compte de service, il doit s'agir de l'adresse e-mail du compte de service.
- IAP_ENABLED : valeur booléenne (true ou false) indiquant si Identity-Aware Proxy est utilisé pour établir la connexion SSH.
Par défaut :
true
--project
: L'PROJECT_ID--universe-domain
: le cas échéant, le domaine cloud souverain du partenaire de confiance hébergeant la ressource.--parameter
ou-p
: paramètres du runbook- 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 que ce problème ne se reproduise, ajoutez une date d'expiration aux 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.
Code de réponse HTTP 503
L'erreur suivante peut s'afficher lorsque vous tentez de vous connecter à une VM à l'aide de SSH :
Failed to validate organization user USERNAME has login permission, got HTTP response code: 503
Ce problème est causé par la limite de débit du serveur de métadonnées de 100 requêtes par seconde et par instance de machine virtuelle. Cette limite ne peut pas être ajustée. Pour résoudre ce problème, attendez quelques secondes, puis réessayez d'établir la connexion.
Pour éviter ce problème à l'avenir, essayez les solutions suivantes:
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.
Résoudre les problèmes liés à OS Login avec gcpdiag
gcpdiag
est un outil Open Source. Il ne s'agit pas d'un produit Google Cloud faisant l'objet d'une assistance officielle. Vous pouvez utiliser l'outilgcpdiag
pour vous aider à identifier et à résoudre les problèmes liés au projet Google Cloud. Pour plus d'informations, consultez le projet gcpdiag sur GitHub.Ce runbook gcpdiag examine les causes potentielles des problèmes d'accès SSH sur les VM Windows et Linux dans Google Cloud. Il se concentre sur les éléments suivants :console Google Cloud
gcpdiag runbook gce/ssh --project=PROJECT_ID \ --parameter name=VM_NAME \ --parameter zone=ZONE \ --parameter principal=PRINCIPAL \ --parameter tunnel_through_iap=IAP_ENABLED
Docker
Vous pouvez exécuter
gcpdiag
à l'aide d'un wrapper qui démarregcpdiag
dans un conteneur Docker. Docker ou Podman doivent être installés.Affichez les paramètres disponibles pour ce runbook.
Remplacez les éléments suivants :
Options utiles :
Pour obtenir la liste et la description de toutes les options de l'outil
gcpdiag
, consultez les instructions d'utilisation degcpdiag
.É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/22 (UTC).
-