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.
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- Menetapkan region dan zona default.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
-
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:
- Pulihkan akun yang dihapus.
- Hapus informasi POSIX akun sebelum menghapus akun.
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:
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.
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:
- 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.
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 , dan pagetoken .
|
oslogin/authorize/ |
Mengambil setelan izin level login atau administratif untuk pengguna Login OS.
Untuk memeriksa izin, Anda harus menentukan parameter
kueri |
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 ke TRUE
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
dan pagetoken
. Ganti
pagesize
dan pagetoken
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
menjadi 1
dan pagetoken
menjadi 0
, 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
atau getent 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
.
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"
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
- 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