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 menetapkan nilai boolean.
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
-
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
ke FALSE
. Dalam
keduanya, setelan per instance akan menggantikan setelan level project atau
setelan default.
Konsol
- 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.
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 kunci serial-port-enable
dengan nilai TRUE
:
{ "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
ke FALSE
, bukan TRUE
. Demikian pula, Anda dapat mengaktifkan akses untuk satu atau beberapa instance meskipun dinonaktifkan untuk project tersebut, secara eksplisit atau default.
Konsol
- 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.
gcloud
Dengan menggunakan Google Cloud CLI, masukkan perintah instances add-metadata
, dan gantilah instance-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 kunci serial-port-enable
dan nilai TRUE
:
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" } ] }
Menghubungkan ke konsol serial
Setelah mengaktifkan akses interaktif untuk konsol seri instance, Anda dapat terhubung ke konsol serial.
Compute Engine menawarkan gateway konsol serial global dan gateway konsol serial regional untuk setiap region Google Cloud. Saat terhubung ke konsol serial menggunakan Google Cloud Console atau Google Cloud CLI, Anda akan otomatis terhubung ke konsol serial regional. Namun, saat menggunakan klien SSH lainnya, Anda dapat memilih antara gateway regional atau global, tetapi kami merekomendasikan gateway regional untuk keandalan yang lebih baik.
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 seri regional VM, lakukan hal berikut:
- 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.
gcloud
Untuk terhubung ke konsol seri regional VM, gunakan
perintah gcloud compute connect-to-serial-port
:
gcloud compute connect-to-serial-port VM_NAME
--port=PORT_NUMBER
Ganti kode berikut:
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.
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.
Saat terhubung menggunakan klien SSH pihak ketiga, Anda dapat menghubungkannya ke konsol serial yang memiliki cakupan global atau konsol seri dengan cakupan regional.
Direkomendasikan: Untuk menghubungkan ke konsol seri regional, gunakan nama host berikut:
region-ssh-serialport.googleapis.com
Untuk terhubung ke konsol serial global, gunakan nama host berikut:
ssh-serialport.googleapis.com
Misalnya, perintah SSH berikut menghubungkan konsol serial regional melalui port serial default (1) dari instance bernama example-instance
dengan nama pengguna jane
di sebuah project dengan project ID myproject
. Instance berada dalam zona
us-central1-f
. Ganti private-ssh-key-file
dengan file kunci SSH pribadi untuk instance.
ssh -i private-ssh-key-file -p 9600 myproject.us-central1-f.example-instance.jane@us-central1-ssh-serialport.googleapis.com
Secara mendetail, Anda dapat terhubung ke konsol serial instance menggunakan informasi login dan alamat berikut:
project-id.zone.instance-name.username.options@region-ssh-serialport.googleapis.com
Ganti kode berikut:
project-id
: Project ID untuk instance ini.zone
: Zona instance.region
: Region instance.instance-name
: nama instanceusername
: 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.
Jika Anda terhubung ke instance VM Windows, hubungkan melalui port 2 menggunakan perintah berikut:
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.port=2@ssh-serialport.googleapis.com
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:
- Download kunci SSH server untuk konsol seri yang akan Anda gunakan:
- Untuk koneksi regional, kunci SSH server untuk suatu 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 suatu region dapat ditemukan di
- Buka file hosts Anda yang dikenal, yang biasanya terletak di
~/.ssh/known_hosts
. Tambahkan konten kunci SSH server, dengan nama host server ditambahkan ke 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...
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:
- Tekan tombol
ENTER
. - Ketikkan
~.
(tanda tilde, diikuti dengan titik).
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:
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
.
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.
Petunjuk berikut menjelaskan cara menyiapkan sandi lokal setelah pembuatan VM.
Di Konsol Google Cloud, buka halaman VM instances.
Pilih VM yang ingin Anda tambahkan sandi lokalnya.
Klik Edit.
Linux
Buka bagian Metadata > Automation.
Jika VM memiliki skrip startup yang ada, salin dan tempel 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. Hindari sandi sederhana, karena beberapa sistem operasi mungkin memerlukan panjang dan kompleksitas sandi yang minimal.
Windows
- Buka bagian Custom metadata.
- Jika VM memiliki skrip startup yang sudah ada, salin dan tempel skrip tersebut di tempat yang aman.
- 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
Klik Save.
Untuk memulai ulang VM, klik Reset. Untuk mengetahui informasi selengkapnya, baca artikel Mereset VM.
Masukkan informasi login Anda saat diminta.
Hapus skrip startup dari VM setelah pengguna dibuat.
Menyiapkan sandi lokal menggunakan passwd
di VM
Petunjuk berikut menjelaskan cara menyiapkan sandi lokal untuk pengguna di VM, sehingga pengguna tersebut dapat login ke konsol serial VM tersebut menggunakan sandi yang ditentukan.
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.
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
:
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
upstart
Untuk sistem operasi Linux yang menggunakan upstart
:
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
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 sebagai COM1
hingga COM4
. Untuk terhubung ke perangkat yang dianggap Windows sebagai
COM3
dan Linux sebagai ttyS2
, Anda perlu menentukan port 3. Gunakan tabel di bawah ini 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:
- Tekan tombol
ENTER
. - Ketik
~B
(tanda tilde, diikuti dengan huruf besarB
). - Ketik perintah Magic SysRq.
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.
- 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:
Untuk salah satu log audit, Anda dapat:
- 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.
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 instance
example-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 sebesar google.rpc.Code.OK menunjukkan bahwa operasi berhasil diselesaikan tanpa error. Karena nilai enum untuk properti ini adalah
0 , properti status.code tidak ditampilkan.
Namun, kode apa pun yang memeriksa nilai status.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 metadata serial-port-enable
ke FALSE
:
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 diberikanorgpolicy.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 metadata serial-port-enable
,
dan tidak ada pengguna organisasi atau project yang dapat mengaktifkan akses
konsol serial interaktif. Secara default, batasan ini ditetapkan ke FALSE
.
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
. Ganti organization-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.
Ganti organization-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
ke FALSE
:
{ "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 menggantikan
project-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
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
, alias^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 mesin A ke mesin B, lalu ke mesin C dll., membuat sesi SSH bertingkat, dan Anda ingin menggunakan perintah tanda tilde (~) untuk memutuskan koneksi atau mengirim sinyal jeda serial, Anda perlu menambahkan karakter tilde tambahan yang cukup ke perintah untuk sampai ke 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.
Opsi lanjutan
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:
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.
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:
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:
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
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.
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:
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.
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
ke disconnect
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
adalah none
. Jika Anda menggunakan setelan default none
, Anda dapat memulai ulang instance tanpa terputus dari konsol serial, tetapi koneksi konsol tidak akan terputus melalui cara normal seperti exit
atau logout
, atau kombinasi tombol normal seperti
Ctrl+D.
Langkah selanjutnya
- 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.