Halaman ini menjelaskan cara mengaktifkan akses interaktif ke konsol serial instance untuk men-debug masalah booting dan jaringan, memecahkan masalah instance yang gagal, berinteraksi dengan GRand Unified Bootloader (GRUB), dan melakukan tugas pemecahan masalah lainnya.
Instance virtual machine (VM) memiliki empat port serial virtual. Berinteraksi dengan port serial mirip dengan menggunakan jendela terminal, dalam hal input dan output tersebut sepenuhnya dalam mode teks dan tidak ada antarmuka grafis atau dukungan mouse. Sistem operasi instance, BIOS, dan entity level sistem lainnya sering menulis output ke port serial, dan dapat menerima input seperti perintah atau jawaban atas suatu perintah. Biasanya, entitas tingkat sistem ini menggunakan port serial pertama (port 1) dan port serial 1 sering disebut sebagai konsol serial.
Jika Anda hanya perlu melihat output port serial tanpa mengeluarkan perintah apa pun ke konsol serial, Anda dapat memanggil metode getSerialPortOutput
atau menggunakan Cloud Logging untuk membaca informasi yang telah ditulis oleh {i>instance <i}
ke porta serialnya; lihat
Melihat log port serial.
Namun, jika mengalami masalah saat mengakses instance melalui SSH atau perlu memecahkan masalah instance yang tidak di-booting sepenuhnya, Anda dapat mengaktifkan akses interaktif ke konsol serial, yang memungkinkan Anda terhubung ke dan berinteraksi dengan salah satu porta serial instance Anda. Misalnya, Anda dapat langsung menjalankan perintah
dan merespons permintaan di port serial.
Saat mengaktifkan atau menonaktifkan port serial, Anda dapat menggunakan nilai Boolean apa pun yang diterima oleh server metadata. Untuk mengetahui informasi selengkapnya, lihat Nilai boolean.
Sebelum memulai
-
Jika Anda belum melakukannya, siapkan autentikasi.
Autentikasi adalah
proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi 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.
- Di konsol Google Cloud, buka halaman Metadata.
- Klik Edit untuk mengedit entri metadata.
- Tambahkan entri baru yang menggunakan kunci serial-port-enable dan nilai TRUE.
- Simpan perubahan Anda.
- Di Konsol Google Cloud, buka halaman VM instances.
- Klik instance yang ingin Anda aktifkan aksesnya.
- Klik Edit.
- Di bagian Remote access, centang kotak Enable connecting to serial ports.
- Simpan perubahan Anda.
- Di konsol Google Cloud, buka halaman Instance VM.
- Klik instance yang ingin Anda hubungkan.
- Pada bagian Akses jarak jauh, klik Hubungkan ke konsol serial untuk terhubung pada port default (port 1).
- Jika Anda ingin terhubung ke port serial lain, klik panah bawah di samping tombol Connect to serial console, lalu ubah nomor port sesuai dengan tersebut.
- Untuk instance Windows, buka menu drop-down di samping tombol tersebut dan hubungkan ke Port 2 untuk mengakses konsol serial.
VM_NAME
: nama VM yang konsol serialnya ingin Anda hubungkan.PORT_NUMBER
: nomor port yang ingin Anda hubungkan. Untuk VM Linux, gunakan1
, untuk VM Windows, gunakan2
. Untuk mempelajari nomor port lebih lanjut, lihat Memahami penomoran port serial.Untuk terhubung ke VM Linux:
ssh -i PRIVATE_SSH_KEY_FILE -p 9600 PROJECT_ID.ZONE.VM_NAME.USERNAME.OPTIONS@REGION-ssh-serialport.googleapis.com
Untuk terhubung ke VM Windows:
ssh -i PRIVATE_SSH_KEY_FILE -p 9600 PROJECT_ID.ZONE.VM_NAME.USERNAME.OPTIONS.port=2@REGION-ssh-serialport.googleapis.com
PRIVATE_SSH_KEY_FILE
: Kunci SSH pribadi untuk instance.PROJECT_ID
: Project ID untuk instance VM ini.ZONE
: Zona instance VM.REGION
: Region instance VM.VM_NAME
: Nama instance VM.USERNAME
: Nama pengguna yang Anda gunakan untuk terhubung ke instance. Biasanya, ini adalah nama pengguna di komputer lokal Anda.OPTIONS
: Opsi tambahan yang dapat Anda tentukan untuk koneksi ini. Misalnya, Anda dapat menentukan port serial tertentu dan menentukan semua opsi lanjutan. Nomor porta bisa berupa 1 sampai 4, secara inklusif. Untuk mempelajari nomor port lebih lanjut, baca artikel Memahami penomoran port serial. Jika dihilangkan, Anda akan terhubung ke port serial 1.- Download kunci SSH server untuk konsol serial yang akan Anda gunakan:
- Untuk koneksi regional, kunci SSH server untuk region dapat ditemukan di
https://www.gstatic.com/vm_serial_port/region/region.pub
- Untuk koneksi global, download kunci SSH server Serial Port Google
- Untuk koneksi regional, kunci SSH server untuk region dapat ditemukan di
- Buka file hosts Anda yang dikenal, yang biasanya terletak di
~/.ssh/known_hosts
. Tambahkan konten kunci SSH server, dengan menambahkan nama host server di depan kunci. Misalnya, jika kunci server us-central1 berisi baris
ssh-rsa AAAAB3NzaC1yc...
,~/.ssh/known_hosts
harus memiliki baris seperti ini:[us-central1-ssh-serialport.googleapis.com]:9600 ssh-rsa AAAAB3NzaC1yc...
- Tekan tombol
ENTER
. - Ketikkan
~.
(tanda tilde, diikuti dengan titik). Kombinasi tombol
CTRL+ALT+DELETE
atau kombinasi serupa lainnya. Ini tidak berfungsi karena konsol serial tidak mengenali kombinasi keyboard PC.Perintah
exit
ataulogout
tidak berfungsi karena tamu tidak mengetahui adanya koneksi jaringan atau modem. Menggunakan perintah ini akan menyebabkan konsol ditutup lalu dibuka kembali, dan Anda akan tetap terhubung ke sesi tersebut. Jika ingin mengaktifkan perintahexit
danlogout
untuk sesi, Anda dapat mengaktifkannya dengan menetapkan opsion-dtr-low
.Di konsol Google Cloud, buka halaman Instance VM.
Di kolom Name, klik nama VM yang ingin Anda tambahkan sandi lokal.
Halaman detail VM akan terbuka.
Klik
Edit.Halaman untuk mengedit detail VM akan terbuka.
Di bagian Metadata > Automation, lakukan tindakan berikut:
Jika VM memiliki skrip startup yang sudah ada, hapus dan simpan skrip tersebut di tempat yang aman.
Tambahkan skrip startup berikut:
#!/bin/bash useradd USERNAME echo USERNAME:PASSWORD | chpasswd usermod -aG google-sudoers USERNAME
Ganti kode berikut:
USERNAME
: nama pengguna yang ingin Anda tambahkan.PASSWORD
: sandi untuk nama pengguna. Karena beberapa sistem operasi memerlukan panjang dan kompleksitas sandi minimal, tentukan sandi sebagai berikut:Gunakan minimal 12 karakter.
Gunakan kombinasi huruf besar dan kecil, angka, serta simbol.
Klik Simpan.
Halaman detail VM akan terbuka.
Klik Reset.
Jika diminta, masukkan informasi login Anda.
Di Konsol Google Cloud, buka halaman Instance VM.
Di kolom Name, klik nama VM yang ingin Anda tambahkan sandi lokal.
Halaman detail VM akan terbuka.
Klik
Edit.Halaman untuk mengedit detail VM akan terbuka.
Di bagian Metadata, lakukan hal berikut:
Jika VM memiliki skrip startup yang sudah ada, simpan skrip tersebut di tempat yang aman, lalu untuk menghapus skrip, klik
Hapus item.Klik Tambahkan item.
Pada kolom Key, masukkan
windows-startup-script-cmd
.Di kolom Nilai, masukkan skrip berikut:
net user USERNAME PASSWORD /ADD /Y net localgroup administrators USERNAME /ADD
Ganti kode berikut:
USERNAME
: nama pengguna yang ingin Anda tambahkan.PASSWORD
: sandi untuk nama pengguna. Karena beberapa sistem operasi memerlukan panjang dan kompleksitas sandi minimal, tentukan sandi sebagai berikut:Gunakan minimal 12 karakter.
Gunakan kombinasi huruf besar dan kecil, angka, serta simbol.
Klik Simpan.
Halaman detail VM akan terbuka.
Klik Reset.
Jika diminta, masukkan informasi login Anda.
Menghubungkan ke VM. Ganti
instance-name
dengan nama instance Anda.gcloud compute ssh instance-name
Di VM, buat sandi lokal dengan perintah berikut. Tindakan ini akan menyetel sandi untuk pengguna yang saat ini Anda gunakan untuk login.
sudo passwd $(whoami)
Ikuti petunjuk untuk membuat sandi.
Selanjutnya, logout dari instance dan hubungkan ke konsol serial.
Masukkan informasi login Anda saat diminta.
Aktifkan layanan untuk sementara hingga mulai ulang berikutnya:
sudo systemctl start serial-getty@ttyS1.service
Aktifkan layanan secara permanen, dimulai dengan mulai ulang berikutnya:
sudo systemctl enable serial-getty@ttyS1.service
Buat file
/etc/init/ttyS1.conf
baru untuk mencerminkanttyS1
dengan menyalin dan mengubah filettyS0.conf
yang ada. Contoh:Di Ubuntu 14.04:
sudo sh -c "sed -e s/ttyS0/ttyS1/g < /etc/init/ttyS0.conf > /etc/init/ttyS1.conf"
Pada RHEL 6.8 dan CentOS 6.8
sudo sh -c "sed -ne '/^# # ttyS0/,/^# exec/p' < /etc/init/serial.conf | sed -e 's/ttyS0/ttyS1/g' -e 's/^# *//' > /etc/init/ttyS1.conf"
Mulai permintaan login di
ttyS1
tanpa memulai ulang:sudo start ttyS1
- Tekan tombol
ENTER
. - Ketik
~B
(tanda tilde, diikuti dengan huruf besarB
). - Ketik perintah Magic SysRq.
- Di Konsol Google Cloud, buka halaman Logs Explorer.
- Luaskan menu drop-down dan pilih GCE VM Instance.
- Di kotak penelusuran, ketik
ssh-serialport.googleapis.com
dan tekan Enter. Daftar log audit akan muncul. Log ini menjelaskan koneksi dan pemutusan koneksi dari konsol serial. Luaskan entri mana pun untuk mendapatkan informasi lebih lanjut:
- Luaskan properti
protoPayload
. - Cari
methodName
untuk melihat aktivitas tempat log ini diterapkan (baik permintaan koneksi atau pemutusan). Misalnya, jika log ini melacak pemutusan dari konsol serial, nama metode akan menampilkan"google.ssh-serialport.v1.disconnect"
. Demikian pula, log koneksi akan menyatakan"google.ssh-serialport.v1.connect"
. Entri log audit dicatat di awal dan akhir setiap sesi di konsol serial. google.rpc.Code.INVALID_ARGUMENT
: Koneksi gagal karena klien memberikan nomor port yang tidak valid atau mencoba menjangkau saluran yang tidak dikenal. Lihat daftar nomor port yang valid.google.rpc.Code.PERMISSION_DENIED
: Anda belum mengaktifkan konsol serial interaktif di server metadata. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan akses interaktif pada konsol serial.google.rpcCode.UNAUTHENTICATED
: Tidak ada kunci SSH yang ditemukan atau tidak ditemukan kunci SSH yang cocok untuk instance ini. Pastikan Anda telah diautentikasi ke instance VM.google.rpc.Code.UNKNOWN
: Ada kesalahan yang tidak diketahui pada permintaan Anda. Anda dapat menghubungi Google di grup diskusi gce atau mengajukan laporan bug.Jika Anda mengalami masalah saat terhubung menggunakan klien SSH standar, tetapi
gcloud compute connect-to-serial-port
berhasil terhubung, sebaiknya jalankangcloud compute connect-to-serial-port
dengan opsi command line--dry-run
untuk melihat perintah SSH yang akan berjalan atas nama Anda, dan bandingkan opsi yang ada dengan perintah yang Anda gunakan.Menyetel kecepatan bit, yang juga dikenal sebagai kecepatan baud, Anda dapat menyetel kecepatan bit apa pun yang diinginkan, seperti
stty 9600
, tetapi fitur ini biasanya memaksa kecepatan efektif menjadi 115.200 bps (~11,5 kB/dtk). Hal ini karena banyak image publik yang ditetapkan ke kecepatan bit lambat, seperti 9.600 pada konsol serial, dan akan di-booting dengan lambat.Beberapa OS image memiliki nilai default yang tidak nyaman pada port serial. Misalnya, di CentOS 7, default
stty icrnl
untuk tombol Enter di konsol adalah mengirimCR
, yang juga dikenal sebagai^M
. Shell bash mungkin menyamarkannya hingga Anda mencoba menetapkan sandi, dan Anda mungkin bertanya-tanya mengapa sandi tampak macet pada perintahpassword:
.Beberapa image publik memiliki kunci kontrol tugas yang dinonaktifkan secara default jika Anda memasang shell ke port dengan cara tertentu. Beberapa contoh kunci ini mencakup
^Z
dan^C
. Perintahsetsid
mungkin dapat memperbaiki masalah ini. Atau, jika Anda melihat pesanjob control is disabled in this shell
, berhati-hatilah untuk tidak menjalankan perintah yang perlu Anda interupsi.Beri tahu sistem ukuran jendela yang Anda gunakan, sehingga bash dan editor dapat mengelolanya dengan tepat. Jika tidak, Anda mungkin mengalami perilaku tampilan yang aneh karena bash atau editor mencoba memanipulasi tampilan berdasarkan asumsi yang salah tentang jumlah baris dan kolom yang tersedia. Gunakan perintah
stty rows Y cols X
dan flagstty -a
untuk melihat apa setelannya. Misalnya:stty rows 60 cols 120
(jika jendela Anda 120 karakter kali 60 baris).Misalnya, jika Anda terhubung menggunakan SSH dari komputer A ke komputer B, lalu ke komputer C, yang membuat sesi SSH bertingkat, dan Anda ingin menggunakan perintah tilde (~) untuk memutuskan koneksi atau mengirim sinyal jeda serial, Anda harus menambahkan karakter tilde tambahan yang cukup ke perintah untuk membuka klien SSH yang tepat. Perintah yang mengikuti satu tanda tilde akan ditafsirkan oleh klien SSH pada mesin A; perintah setelah dua tanda tilde berturut-turut (Enter~~) ditafsirkan oleh klien pada mesin B, dan seterusnya. Anda hanya perlu menekan Enter satu kali karena akan diteruskan ke tujuan SSH terdalam. Hal ini berlaku untuk setiap penggunaan klien SSH yang menyediakan fitur tilde escape.
Jika Anda tidak dapat melacak jumlah karakter tanda tilde yang diperlukan, tekan tombol Enter, lalu ketik karakter gelombang satu per satu hingga instance menampilkan tanda tilde kembali. Gema ini menunjukkan bahwa Anda telah mencapai akhir rantai dan sekarang Anda mengetahui bahwa untuk mengirim perintah tanda tilde ke klien SSH bertingkat, Anda membutuhkan satu tanda tilde lebih sedikit daripada jumlah tanda tilde yang Anda ketik.
replay-lines=N
: SetelN
ke jumlah baris yang ingin Anda putar ulang. Misalnya, jikaN
adalah 50, 50 baris terakhir dari output konsol akan disertakan.replay-bytes=N
: Memutar ulangN
byte terbaru. Anda juga dapat menetapkanN
kenew
yang memutar ulang semua output yang belum dikirim ke klien mana pun.replay-from=N
: Memutar ulang output, mulai dari indeks byte absolut yang Anda berikan. Anda bisa mendapatkan indeks byte saat ini dari output konsol serial dengan membuat permintaangetSerialPortOutput
. Jika Anda menetapkanreplay-from
, semua opsi pemutaran ulang lainnya akan diabaikan.replay-lines=N
danreplay-bytes=new
- Memutar ulang jumlah baris yang ditentukan ATAU memutar ulang semua output yang sebelumnya
tidak dikirim ke klien mana pun, mana pun yang lebih besar. Klien pertama yang terhubung dengan kombinasi flag ini akan melihat semua output yang telah dikirim ke port serial, dan klien yang terhubung secara berurutan hanya akan melihat baris
N
terakhir. Contoh: replay-lines=N
danreplay-bytes=M
- Putar ulang baris hingga, tetapi tidak lebih dari, jumlah baris atau byte
yang dijelaskan oleh tanda ini, mana saja yang lebih sedikit. Opsi ini tidak akan memutar ulang lebih dari
N
atauM
byte. insert-stderr-note
: Menyisipkan catatan padastderr
klien SSH yang menunjukkan bahwa output dihapus. Opsi ini adalah opsi default.ignore
: Menurunkan output secara diam-diam dan tidak melakukan apa pun.disconnect
: Menghentikan koneksi.- Pelajari API
getSerialPortOutput
lebih lanjut. - Pelajari cara mempertahankan dan melihat output port serial bahkan setelah instance VM dihapus.
- Baca tips pemecahan masalah lainnya.
- Pelajari lebih lanjut cara menerapkan metadata.
- Pelajari kunci SSH.
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.
Mengaktifkan akses interaktif pada konsol serial
Aktifkan akses konsol serial interaktif untuk setiap instance VM atau untuk seluruh project.
Mengaktifkan akses untuk project
Jika akses konsol serial interaktif pada suatu project diaktifkan, akses untuk semua instance VM yang merupakan bagian dari project tersebut akan aktif.
Secara default, akses port serial interaktif dinonaktifkan. Anda juga dapat menonaktifkannya secara eksplisit dengan menyetel kunci
serial-port-enable
keFALSE
. Dalam keduanya, setelan per instance akan menggantikan setelan level project atau setelan default.Konsol
gcloud
Dengan menggunakan Google Cloud CLI, masukkan perintah
project-info add-metadata
sebagai berikut:gcloud compute project-info add-metadata \ --metadata serial-port-enable=TRUE
REST
Di API, buat permintaan ke metode
projects().setCommonInstanceMetadata
, yang menyediakan kunciserial-port-enable
dengan nilaiTRUE
:{ "fingerprint": "FikclA7UBC0=", "items": [ { "key": "serial-port-enable", "value": "TRUE" } ] }
Mengaktifkan akses untuk instance VM
Mengaktifkan akses konsol serial interaktif untuk instance tertentu. Setelan per instance, jika ada, akan menggantikan setelan tingkat project. Anda juga dapat menonaktifkan akses untuk instance tertentu, meskipun akses diaktifkan pada level project, dengan menetapkan
serial-port-enable
keFALSE
, bukanTRUE
. Demikian pula, Anda dapat mengaktifkan akses untuk satu atau beberapa instance meskipun dinonaktifkan untuk project tersebut, secara eksplisit atau default.Konsol
gcloud
Dengan menggunakan Google Cloud CLI, masukkan perintah
instances add-metadata
, dan gantilahinstance-name
dengan nama instance Anda.gcloud compute instances add-metadata instance-name \ --metadata serial-port-enable=TRUE
REST
Di API, buat permintaan ke metode
instances().setMetadata
dengan kunciserial-port-enable
dan nilaiTRUE
:POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance/setMetadata { "fingerprint": "zhma6O1w2l8=", "items": [ { "key": "serial-port-enable", "value": "TRUE" } ] }
Mengonfigurasi konsol serial untuk instance bare metal
Untuk instance bare metal, tingkatkan kecepatan bit, yang juga dikenal sebagai kecepatan baud, untuk konsol serial menjadi 115.200 bps (~11,5 kB/dtk). Menggunakan kecepatan yang lebih lambat akan menghasilkan output konsol yang tidak jelas atau tidak ada.
Konfigurasi bootloader bervariasi di antara sistem operasi dan versi OS. Lihat dokumentasi distributor OS untuk mendapatkan petunjuk.
Jika mengubah kecepatan bit di command line untuk sesi saat ini, gunakan perintah yang mirip dengan berikut:
console=ttyS0,115200
Jika mengubah konfigurasi GRUB, gunakan perintah yang mirip dengan berikut ini:
serial --speed=115200
Pastikan Anda memperbarui konfigurasi bootloader yang sebenarnya. Hal ini dapat dilakukan dengan
update-grub
,grub2-mkconfig
, atau perintah serupa.Menghubungkan ke konsol serial
Compute Engine menawarkan gateway konsol serial regional untuk setiap region Google Cloud. Setelah mengaktifkan akses interaktif untuk konsol serial VM, Anda dapat terhubung ke konsol serial regional.
Konsol serial mengautentikasi pengguna dengan kunci SSH. Secara khusus, Anda harus menambahkan kunci SSH publik ke metadata project atau instance dan menyimpan kunci pribadi Anda di komputer lokal tempat Anda ingin terhubung. Gcloud CLI dan Google Cloud Console otomatis menambahkan kunci SSH ke project untuk Anda. Jika menggunakan klien pihak ketiga, Anda mungkin perlu menambahkan kunci SSH secara manual.
Konsol
Untuk terhubung ke konsol serial regional VM, lakukan langkah berikut:
gcloud
Untuk terhubung ke konsol serial regional VM, gunakan perintah
gcloud compute connect-to-serial-port
:gcloud compute connect-to-serial-port VM_NAME
--port=PORT_NUMBERGanti kode berikut:
Klien SSH lainnya
Anda dapat terhubung ke konsol serial instance menggunakan klien SSH pihak ketiga lainnya, selama klien tersebut memungkinkan Anda terhubung ke port TCP 9600.
Untuk terhubung ke konsol serial regional VM, jalankan salah satu perintah berikut, bergantung pada OS VM Anda:
Ganti kode berikut:
Jika mengalami masalah saat terhubung menggunakan klien SSH pihak ketiga, Anda dapat menjalankan perintah
gcloud compute connect-to-serial-port
dengan opsi command line--dry-run
untuk melihat perintah SSH yang seharusnya dijalankan untuk Anda. Kemudian Anda dapat membandingkan opsi dengan perintah yang digunakan.Menyiapkan koneksi aman
Saat menggunakan klien SSH pihak ketiga yang bukan Google Cloud CLI, Anda dapat memastikan bahwa Anda terlindungi dari peniruan identitas atau serangan man in the middle dengan memeriksa SSH server Port Serial Google tombol. Untuk menyiapkan sistem agar memeriksa kunci SSH server, selesaikan langkah-langkah berikut:
Untuk alasan keamanan, Google mungkin sesekali mengubah kunci SSH server Serial Port Google. Jika klien Anda gagal mengautentikasi kunci server, segera akhiri upaya koneksi dan selesaikan langkah sebelumnya untuk mendownload kunci SSH server Port Serial Google yang baru.
Jika, setelah memperbarui kunci host, Anda terus menerima error autentikasi host dari klien, hentikan upaya untuk terhubung ke port serial dan hubungi dukungan Google. Jangan memberikan kredensial apa pun melalui koneksi jika autentikasi host gagal.
Memutus koneksi dari konsol serial
Untuk memutuskan koneksi dari konsol serial:
Anda dapat menemukan perintah lain dengan mengetik
~?
atau dengan memeriksa halaman utama untuk SSH:man ssh
Jangan mencoba memutuskan koneksi menggunakan salah satu metode berikut:
Menghubungkan ke konsol serial dengan perintah login
Jika Anda mencoba memecahkan masalah terkait VM yang telah selesai melakukan booting atau mencoba memecahkan masalah yang terjadi setelah VM melakukan booting dari mode pengguna tunggal, Anda mungkin akan diminta untuk memasukkan informasi login saat mencoba untuk mengakses konsol seri.
Secara default, image sistem Linux yang disediakan Google tidak dikonfigurasi untuk mengizinkan login berbasis sandi bagi pengguna lokal. Namun, image Windows yang disediakan Google dikonfigurasi untuk mengizinkan login berbasis sandi bagi pengguna lokal.
Jika VM menjalankan image yang telah dikonfigurasi sebelumnya dengan login port serial, Anda harus menyiapkan sandi lokal pada VM agar dapat login ke konsol serial, jika diminta. Anda dapat menyiapkan sandi lokal setelah terhubung ke VM atau dengan menggunakan skrip startup.
Menyiapkan sandi lokal menggunakan skrip startup
Anda dapat menggunakan skrip startup untuk menyiapkan sandi lokal yang memungkinkan Anda terhubung ke konsol serial selama atau setelah pembuatan VM.
Untuk menyiapkan sandi lokal di VM yang ada, pilih salah satu opsi berikut:
Linux
Windows
Setelah pengguna dibuat, ganti skrip startup dengan skrip startup yang Anda simpan di bagian ini.
Menyiapkan sandi lokal menggunakan
passwd
di VMPetunjuk berikut menjelaskan cara menyiapkan sandi lokal untuk pengguna di VM, sehingga pengguna tersebut dapat login ke konsol serial VM tersebut menggunakan sandi yang ditentukan.
Menyiapkan login di port serial lain
Dialog login diaktifkan pada port 1 secara default di sebagian besar sistem operasi Linux. Namun, port 1 sering kali kewalahan karena data logging dan informasi lain yang dicetak ke port. Sebagai gantinya, Anda dapat memilih untuk mengaktifkan permintaan login di port lain, seperti port 2 (ttyS1), dengan menjalankan salah satu perintah berikut di VM Anda. Anda dapat melihat daftar port yang tersedia untuk VM di bagian Memahami penomoran port serial.
Tabel berikut mencantumkan gambar yang telah dikonfigurasi dengan login konsol serial dan port default.
Sistem operasi Port dengan permintaan login secara default Pengelolaan layanan CentOS 6 1 upstart
CentOS 7 1 systemd
CoreOS 1 systemd
COS 1 systemd
Debian 8 1 systemd
Debian 9 1 systemd
OpenSUSE 13 1 systemd
OpenSUSE Leap 1 systemd
RHEL 6 1 upstart
RHEL 7 1 systemd
SLES 11 1 sysvinit
SLES 12 1 systemd
Ubuntu 14.04 1 upstart
Ubuntu 16.04 1 systemd
Ubuntu 17.04 1 systemd
Ubuntu 17.10 1 systemd
Windows COM2 T/A Untuk mengaktifkan permintaan login pada port serial tambahan, selesaikan petunjuk berikut.
systemd
Untuk sistem operasi Linux yang menggunakan
systemd
:upstart
Untuk sistem operasi Linux yang menggunakan
upstart
:sysvinit
Untuk sistem operasi Linux yang menggunakan
sysvinit
, jalankan perintah berikut:sudo sed -i~ -e 's/^#T([01])/T\1/' /etc/inittab sudo telinit q
Memahami penomoran port serial
Setiap instance mesin virtual memiliki empat port serial. Agar konsisten dengan
getSerialPortOutput
API, setiap port diberi nomor 1 sampai 4. Linux dan sistem serupa lainnya menomori port serial 0 hingga 3. Misalnya, pada banyak image sistem operasi, perangkat yang sesuai adalah/dev/ttyS0
hingga/dev/ttyS3
. Windows menyebut port serial sebagaiCOM1
hinggaCOM4
. Untuk terhubung ke perangkat yang dianggap Windows sebagaiCOM3
dan Linux sebagaittyS2
, Anda perlu menentukan port 3. Gunakan tabel berikut untuk membantu Anda mengetahui port mana yang ingin Anda hubungkan.Port serial instance mesin virtual Port serial Linux standar Port COM Windows 1
/dev/ttyS0
COM1
2
/dev/ttyS1
COM2
3
/dev/ttyS2
COM3
4
/dev/ttyS3
COM4
Perlu diperhatikan bahwa banyak image Linux menggunakan port 1 (
/dev/ttyS0
) untuk mencatat pesan ke dalam log dari program kernel dan sistem.Mengirim jeda serial
Fitur kunci Magic SysRq memungkinkan Anda melakukan tugas tingkat rendah, apa pun status sistem. Misalnya, Anda dapat menyinkronkan sistem file, memulai ulang instance, mengakhiri proses, dan melepas sistem file menggunakan fitur kunci Magic SysRq.
Untuk mengirim perintah Magic SysRq menggunakan simulasi jeda serial:
Melihat log audit konsol serial
Compute Engine menyediakan log audit untuk melacak siapa yang telah terhubung dan terputus dari konsol serial instance. Untuk melihat log, Anda harus memiliki izin untuk Logs Viewer atau menjadi penampil atau editor project.
Untuk salah satu log audit, Anda dapat:
Ada berbagai properti log audit untuk berbagai jenis log. Misalnya, log audit yang terkait dengan koneksi memiliki properti yang khusus untuk log koneksi, sedangkan log audit untuk pemutusan koneksi memiliki kumpulan propertinya sendiri. Ada properti log audit tertentu yang juga digunakan bersama oleh kedua jenis log tersebut.
Semua log konsol serial
Tabel berikut menyediakan properti log audit dan nilainya untuk semua log konsol serial:
Properti Nilai requestMetadata.callerIp
Alamat IP dan nomor port tempat koneksi berasal. serviceName
ssh-serialport.googleapis.com
resourceName
String yang berisi project ID, zona, nama instance, dan nomor port seri untuk menunjukkan konsol seri mana yang terkait dengan hal ini. Misalnya, projects/myproject/zones/us-east1-a/instances/example-instance/SerialPort/2
adalah nomor port 2, juga dikenal sebagai COM2 atau /dev/ttyS1, untuk instanceexample-instance
.resource.labels
Properti yang mengidentifikasi ID instance, zona, dan ID project. timestamp
Stempel waktu yang menunjukkan kapan sesi dimulai atau berakhir. severity
NOTICE
operation.id
String ID yang mengidentifikasi sesi secara unik; Anda dapat menggunakan cara ini untuk menghubungkan entri pemutusan dengan entri koneksi yang sesuai. operation.producer
ssh-serialport.googleapis.com
Log koneksi
Tabel berikut menyediakan properti log audit dan nilainya yang khusus untuk log koneksi:
Properti Nilai methodName
google.ssh-serialport.v1.connect
status.message
Connection succeeded.
request.serialConsoleOptions
Semua opsi yang ditentukan dengan permintaan, termasuk nomor port serial. request.@type
type.googleapis.com/google.compute.SerialConsoleSessionBegin
request.username
Nama pengguna yang ditentukan untuk permintaan ini. Ini digunakan untuk memilih kunci publik yang akan dicocokkan. operation.first
TRUE
status.code
Untuk permintaan koneksi yang berhasil, nilai status.code
sebesargoogle.rpc.Code.OK
menunjukkan bahwa operasi berhasil diselesaikan tanpa error. Karena nilai enum untuk properti ini adalah0
, propertistatus.code
tidak ditampilkan. Namun, kode apa pun yang memeriksa nilaistatus.code
google.rpc.Code.OK
akan berfungsi seperti yang diharapkan.Log pemutusan
Tabel berikut menyediakan properti log audit dan nilainya yang khusus untuk log pemutusan:
Properti Nilai methodName
google.ssh-serialport.v1.disconnect
response.duration
Jumlah waktu, dalam detik, saat sesi berlangsung. response.@type
type.googleapis.com/google.compute.SerialConsoleSessionEnd
operation.last
TRUE
Log koneksi gagal
Jika koneksi gagal, Compute Engine akan membuat entri log audit. Log koneksi yang gagal terlihat sangat mirip dengan entri koneksi yang berhasil, tetapi memiliki properti berikut ini untuk menunjukkan koneksi yang gagal.
Properti Nilai severity
ERROR
status.code
Kode error Google API kanonis yang paling menjelaskan error. Berikut adalah kemungkinan kode error yang mungkin muncul:
status.message
Pesan yang dapat dibaca manusia untuk entri ini. Menonaktifkan akses konsol serial interaktif
Anda dapat menonaktifkan akses konsol serial interaktif dengan mengubah metadata pada instance atau project tertentu, atau dengan menetapkan Kebijakan Organisasi yang menonaktifkan akses konsol serial interaktif ke semua instance VM untuk satu atau lebih proyek yang merupakan bagian dari organisasi.
Menonaktifkan konsol serial interaktif pada instance atau project tertentu
Pemilik dan editor project, serta pengguna yang diberi peran
compute.instanceAdmin.v1
, dapat menonaktifkan akses ke konsol serial dengan mengubah metadata pada instance atau project tertentu. Mirip dengan mengaktifkan akses konsol serial, setel metadataserial-port-enable
keFALSE
:serial-port-enable=FALSE
Misalnya, dengan menggunakan Google Cloud CLI, Anda dapat menerapkan metadata ini ke instance tertentu seperti berikut:
gcloud compute instances add-metadata instance-name \ --metadata=serial-port-enable=FALSE
Untuk menerapkan metadata ke project:
gcloud compute project-info add-metadata \ --metadata=serial-port-enable=FALSE
Menonaktifkan akses konsol serial interaktif melalui Kebijakan Organisasi
Jika Anda telah diberikan
orgpolicy.policyAdmin
tertentu dalam organisasi, Anda dapat mengaturkebijakan organisasi yang mencegah akses interaktif ke konsol serial, terlepas dari apakah akses konsol serial interaktif diaktifkan di server metadata atau tidak. Setelah kebijakan organisasi ditetapkan, kebijakan tersebut akan secara efektif mengganti kunci metadataserial-port-enable
, dan tidak ada pengguna organisasi atau project yang dapat mengaktifkan akses konsol serial interaktif. Secara default, batasan ini ditetapkan keFALSE
.Batasan untuk menonaktifkan akses konsol serial interaktif adalah sebagai berikut:
compute.disableSerialPortAccess
Selesaikan petunjuk berikut untuk menetapkan kebijakan ini di organisasi. Setelah menyiapkan kebijakan, Anda dapat memberikan pengecualian per project.
gcloud
Untuk menetapkan kebijakan menggunakan Google Cloud CLI, jalankan perintah
resource-manager enable-enforce
. Gantiorganization-id
dengan ID organisasi Anda. Contohnya,1759840282
gcloud resource-manager org-policies enable-enforce \ --organization organization-id compute.disableSerialPortAccess
REST
Untuk menyetel kebijakan di API, buat permintaan
POST
ke URL berikut. Gantiorganization-name
dengan nama organisasi Anda. Contoh,organizations/1759840282
.POST https://cloudresourcemanager.googleapis.com/v1/organization-name:setOrgPolicy
Isi permintaan harus berisi objek
policy
dengan batasan berikut:"constraint": "constraints/compute.disableSerialPortAccess"
Contoh:
{ "policy": { "booleanPolicy": { "enforced": TRUE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Kebijakan ini akan langsung berlaku, sehingga setiap project dalam organisasi akan segera berhenti mengizinkan akses interaktif ke konsol serial.
Untuk menonaktifkan kebijakan untuk sementara, gunakan perintah
disable-enforce
:gcloud resource-manager org-policies disable-enforce \ --organization organization-id compute.disableSerialPortAccess
Atau, Anda dapat membuat permintaan API dengan isi permintaan menetapkan parameter
enforced
keFALSE
:{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Menetapkan kebijakan organisasi di level project
Anda dapat menetapkan kebijakan organisasi yang sama per project. Tindakan ini akan menggantikan setelan di tingkat organisasi.
gcloud
Untuk menonaktifkan penerapan kebijakan ini pada project tertentu. Ganti
project-id
dengan project ID Anda.gcloud resource-manager org-policies disable-enforce \ --project project-id compute.disableSerialPortAccess
Anda dapat mengaktifkan penerapan kebijakan ini menggunakan perintah
enable-enforce
dengan nilai yang sama.REST
Dalam API, buat permintaan
POST
ke URL berikut guna mengaktifkan akses konsol serial interaktif untuk project, yang menggantikanproject-id
dengan project ID:POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setOrgPolicy
Isi permintaan harus berisi objek
policy
dengan batasan berikut:"constraint": "constraints/compute.disableSerialPortAccess"
Contoh:
{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Tips dan trik
Opsi lanjutan
Anda juga dapat menggunakan opsi lanjutan berikut dengan port serial.
Mengontrol koneksi maksimum
Anda dapat menyetel properti
max-connections
untuk mengontrol jumlah koneksi serentak yang dapat dilakukan ke port serial ini pada satu waktu. Jumlah koneksi default dan maksimum adalah 5. Contoh:gcloud compute connect-to-serial-port instance-name \ --port port-number \ --extra-args max-connections=3
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.max-connections=3@ssh-serialport.googleapis.com
Menyetel opsi pemutaran ulang
Secara default, setiap kali terhubung ke konsol serial, Anda akan menerima replay 10 baris data terakhir, terlepas dari apakah 10 baris terakhir telah dilihat oleh klien SSH lain. Anda dapat mengubah setelan ini dan mengontrol jumlah dan baris mana yang ditampilkan dengan menyetel opsi berikut:
Dengan Google Cloud CLI, tambahkan baris berikut ke
connect-to-serial-port
di manaN
adalah jumlah baris yang ditentukan (atau byte atau indeks byte absolut, bergantung pada opsi replay yang Anda pilih):--extra-args replay-lines=N
Jika Anda menggunakan klien SSH pihak ketiga, berikan opsi ini dalam perintah SSH:
ssh -i private-ssh-key-file -p 9600 myproject.us-central1-f.example-instance.jane.port=3.replay-lines=N@ssh-serialport.googleapis.com
Anda juga dapat menggunakan kombinasi dari opsi ini. Contoh:
gcloud compute connect-to-serial-port instance-name--port port-number --extra-args replay-lines=N,replay-bytes=new
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.replay-lines=N.replay-bytes=new@ssh-serialport.googleapis.com
gcloud compute connect-to-serial-port instance-name--port port-number --extra-args replay-lines=N,replay-bytes=M
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.replay-lines=N.replay-bytes=M@ssh-serialport.googleapis.com
Menangani output yang dilepas
Output 1 MiB terbaru untuk setiap port serial selalu tersedia dan umumnya, klien SSH Anda tidak akan melewatkan output apa pun dari port serial. Jika, karena alasan tertentu, klien SSH berhenti menerima output selama jangka waktu tertentu tetapi tidak terputus, dan lebih dari 1 MiB data baru dihasilkan, klien SSH Anda mungkin melewatkan beberapa output. Jika klien SSH tidak menerima data cukup cepat untuk terus mengikuti output pada port konsol serial, Anda dapat menetapkan properti
on-dropped-output
untuk menentukan perilaku konsol.Tetapkan salah satu opsi yang berlaku berikut dengan properti ini:
Contoh:
gcloud compute connect-to-serial-port instance-name \ --port port-number \ --extra-args on-dropped-output=ignore
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.on-dropped-output=ignore@ssh-serialport.googleapis.com
Mengaktifkan pemutusan koneksi menggunakan perintah keluar atau logout
Anda dapat mengaktifkan perintah sambungan keluar atau logout dengan menyetel properti
on-dtr-low
kedisconnect
saat Anda terhubung ke konsol serial.Di Google Cloud CLI, tambahkan flag berikut ke perintah
connect-to-serial-port
Anda:--extra-args on-dtr-low=disconnect
Jika Anda menggunakan klien SSH pihak ketiga, berikan opsi ini dalam perintah SSH:
ssh -i private-ssh-key-file -p 9600 myproject.us-central1-f.example-instance.jane.port=3.on-dtr-low=disconnect@ssh-serialport.googleapis.com
Mengaktifkan opsi
disconnect
dapat menyebabkan instance Anda terputus satu atau beberapa kali saat Anda me-reboot instance karena sistem operasi akan mereset port serial saat booting.Setelan default untuk opsi
on-dtr-low
adalahnone
. Jika Anda menggunakan setelan defaultnone
, Anda dapat memulai ulang instance tanpa terputus dari konsol serial, tetapi koneksi konsol tidak akan terputus melalui cara normal sepertiexit
ataulogout
, atau kombinasi tombol normal seperti Ctrl+D.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-12-22 UTC.
-