Dokumen ini menjelaskan cara memecahkan masalah Login OS menggunakan server metadata. Untuk informasi tentang cara menyiapkan Login OS atau untuk mendapatkan petunjuk langkah demi langkah, lihat Menyiapkan Login OS.
Anda dapat membuat kueri server metadata dari dalam instance virtual machine (VM). Untuk mengetahui informasi selengkapnya, baca Menyimpan dan mengambil metadata instance.
Sebelum memulai
-
Siapkan autentikasi, jika Anda belum melakukannya.
Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.
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.
- Pulihkan akun yang dihapus.
- Hapus informasi POSIX akun sebelum menghapus akun.
Lihat profil Login OS Anda dengan menjalankan perintah
gcloud compute os-login describe-profile
:gcloud compute os-login describe-profile
Outputnya terlihat mirip dengan yang berikut ini:
name: '00000000000000' posixAccounts: ... sshPublicKeys: ...: fingerprint: ... key: | ssh-rsa AAAAB3NzaC1yc2... name: ... ...
Tinjau outputnya untuk mengidentifikasi kunci SSH yang tidak digunakan.
Hapus kunci yang tidak digunakan dari output menggunakan perintah
gcloud compute os-login ssh-keys remove
:gcloud compute os-login ssh-keys remove --key=KEY
Ganti
KEY
dengan sidik jari kunci atau string kunci.- Mengimplementasikan mekanisme percobaan ulang dalam kode aplikasi. Untuk mengetahui informasi selengkapnya, lihat:
- Gunakan kembali koneksi SSH yang ada.
- Kirim perintah dalam beberapa batch untuk mengurangi koneksi SSH dan kueri metadata Login OS.
Buat kueri profil pengguna untuk mendapatkan nilai kolom
name
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
Dalam output, catat
name
.Jalankan perintah
login
berikut menggunakan nilainame
:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=LOGIN_NAME" -H "Metadata-Flavor: Google"
- Pelajari Login OS lebih lanjut.
- Pelajari cara kerja koneksi SSH ke VM Linux di Compute Engine.
- Untuk petunjuk langkah demi langkah, tinjau salah satu hal berikut:
- Tinjau Mengelola Login OS dalam organisasi
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Untuk informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.
Pesan error umum
Berikut adalah contoh error umum yang mungkin Anda alami saat menggunakan Login OS.
Tidak dapat menemukan nama untuk grup
Pada beberapa VM yang menggunakan Login OS, Anda mungkin menerima pesan error berikut setelah koneksi dibuat:
/usr/bin/id: cannot find name for group ID 123456789
Abaikan pesan error ini. Error ini tidak memengaruhi VM Anda.
Gagal mendapatkan grup
Anda mungkin melihat log yang mirip dengan yang berikut ini saat membuat VM:
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
Log ini menunjukkan bahwa organisasi Anda belum mengonfigurasi grup Linux Login OS. Abaikan pesan ini.
Prasyarat yang gagal
Anda mungkin melihat error yang serupa dengan berikut ini saat terhubung ke VM menggunakan SSH:
ERROR: (gcloud.compute.ssh) FAILED_PRECONDITION: The specified username or UID is not unique within given system ID.
Error ini terjadi saat Login OS mencoba membuat nama pengguna yang sudah ada di dalam organisasi. Hal ini biasa terjadi ketika akun pengguna dihapus dan pengguna baru dengan alamat email yang sama dibuat tidak lama setelahnya. Setelah akun pengguna dihapus, diperlukan waktu hingga 48 jam untuk menghapus informasi POSIX pengguna.
Untuk menyelesaikan masalah ini, lakukan salah satu tindakan berikut:
Argumen tidak valid
Anda mungkin melihat error yang serupa dengan berikut ini saat terhubung ke VM menggunakan SSH atau menggunakan SCP untuk mentransfer file:
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.
Untuk mengatasi error ini, lakukan hal berikut:
Untuk mencegah masalah ini terjadi lagi di masa mendatang, tambahkan waktu habis masa berlaku untuk kunci SSH. Kunci yang sudah tidak berlaku akan otomatis dihapus dari profil login Anda dalam waktu 48 jam setelah masa berlaku berakhir, atau saat Anda menambahkan kunci baru ke profil.
Kode respons HTTP: 503
Anda mungkin melihat error berikut saat mencoba terhubung ke VM menggunakan SSH:
Failed to validate organization user USERNAME has login permission, got HTTP response code: 503
Masalah ini disebabkan oleh batas kapasitas server metadata 100 kueri per detik per instance virtual machine. Batas ini tidak dapat disesuaikan. Untuk mengatasi masalah ini, tunggu beberapa detik, lalu coba lagi koneksi.
Untuk mencegah masalah ini pada masa mendatang, coba langkah berikut:
Entri metadata Login OS default
Compute Engine menentukan kumpulan entri metadata default yang menyajikan informasi Login OS. Metadata default selalu ditentukan dan disetel oleh server. Kunci metadata default peka huruf besar/kecil.
Tabel berikut menjelaskan entri yang dapat Anda kueri.
Relatif terhadap http://metadata.google.internal/computeMetadata/v1/
Entri metadata Deskripsi project/attributes/enable-oslogin
Memeriksa apakah Login OS diaktifkan pada project Google Cloud saat ini. instance/attributes/enable-oslogin
Memeriksa apakah Login OS diaktifkan pada VM saat ini. oslogin/users/
Mengambil informasi profil untuk pengguna Login OS. Anda dapat meneruskan parameter kueri seperti username
,uid
,pagesize
, danpagetoken
.oslogin/authorize/
Mengambil setelan izin level login atau administratif untuk pengguna Login OS.
Untuk memeriksa izin, Anda harus menentukan parameter kueri
policy
. Nilai parameter kebijakan harus ditetapkan kelogin
(untuk memeriksa izin login) atauadminLogin
(untuk memeriksa akses sudo).Memeriksa apakah Login OS dikonfigurasi
Gunakan konsol Google Cloud atau Google Cloud CLI untuk membuat kueri metadata guna menentukan apakah Login OS diaktifkan atau tidak. Login OS diaktifkan jika kunci metadata
enable-oslogin
ditetapkan keTRUE
dalam metadata project atau instance. Jika instance dan metadata project ditetapkan, nilai yang ditetapkan dalam metadata instance akan lebih diutamakan.Melihat pengguna Login OS
Untuk melihat informasi profil beberapa pengguna, Anda harus menentukan parameter
pagesize
danpagetoken
. Gantipagesize
danpagetoken
dengan nilai numerik yang diperlukan.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=PAGE_SIZE& pagetoken=PAGE_TOKEN" -H "Metadata-Flavor: Google"
Misalnya, untuk menetapkan
pagesize
menjadi1
danpagetoken
menjadi0
, jalankan perintah berikut:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=1&pagetoken=0" -H "Metadata-Flavor: Google"
Di sebagian besar distribusi, Anda juga dapat menjalankan perintah Unix
getent passwd
untuk mengambil entri sandi bagi pengguna organisasi.Melihat pengguna Login OS tertentu
Untuk melihat informasi profil bagi pengguna tertentu di VM Anda, jalankan perintah berikut:
curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=USERNAME" -H "Metadata-Flavor: Google"
Ganti
USERNAME
dengan nama pengguna yang ingin Anda kueri.Misalnya, Anda dapat melakukan permintaan untuk mencari
user_example_com
pengguna. Perintah dan output berikut menunjukkan pemformatan tambahan agar lebih mudah dibaca.curl "http://metadata.google.internal/computeMetadata/v1/oslogin/users?username=user_example_com" -H "Metadata-Flavor: Google"
Outputnya mirip dengan hal berikut ini:
{ "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..." } } }] }
Di sebagian besar distribusi, Anda juga dapat menjalankan perintah Unix seperti
getent passwd username
ataugetent passwd uid
untuk mengambil informasi profil.Untuk mengambil kunci SSH bagi pengguna, Anda juga dapat menjalankan
/usr/bin/google_authorized_keys USERNAME
. Jika tidak ada kunci yang ditampilkan, pengguna mungkin tidak memiliki izin yang diperlukan untuk login ke VM.Memeriksa izin login
Untuk melihat izin level login dan administratif, Anda harus memberikan parameter kueri
policy=login&email=LOGIN_NAME
.Misalnya, Anda dapat membuat kueri izin login untuk
user_example_com
pengguna yang dilihat di bagian sebelumnya:curl "http://metadata.google.internal/computeMetadata/v1/oslogin/authorize?policy=login&email=12345678912345" -H "Metadata-Flavor: Google"
Output perintah menunjukkan bahwa pengguna diberi otorisasi untuk login ke VM:
{"success":true}
Memeriksa apakah VM Anda memiliki akun layanan atau tidak
Anda dapat membuat kueri server metadata untuk menemukan akun layanan yang terkait dengan VM Anda. Di VM Anda, jalankan perintah berikut:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" -H "Metadata-Flavor: Google"
Outputnya mirip dengan hal berikut ini:
12345-sa@developer.gserviceaccount.com/ default/
Jika tidak ada akun layanan yang ditemukan, outputnya akan kosong.
Langkah selanjutnya
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2024-11-27 UTC.
-