Questa pagina descrive come abilitare l'accesso interattivo alla console seriale di un'istanza per eseguire il debug dei problemi di avvio e di rete, risolvere i problemi delle istanze malfunzionanti, interagire con GRand Unified Bootloader (GRUB) ed eseguire altre attività di risoluzione dei problemi.
Un'istanza di macchina virtuale (VM) ha quattro porte seriali virtuali. L'interazione con una porta seriale è simile all'utilizzo di una finestra del terminale, in quanto l'input e l'output sono interamente in modalità testo e non sono presenti un'interfaccia grafica o il supporto del mouse. Il sistema operativo, il BIOS e altre entità a livello di sistema dell'istanza spesso scrivono l'output sulle porte seriali e possono accettare input come comandi o risposte a prompt. In genere, queste entità a livello di sistema utilizzano la prima porta seriale (porta 1) e la porta seriale 1 viene spesso indicata come console seriale.
Se devi solo visualizzare l'output della porta seriale senza inviare comandi alla console seriale, puoi chiamare il metodo getSerialPortOutput
o utilizzare Cloud Logging per leggere le informazioni che l'istanza ha scritto nella porta seriale. Per maggiori dettagli, consulta Visualizzazione dei log della porta seriale.
Tuttavia, se riscontri problemi di accesso all'istanza tramite SSH o devi
risolvere i problemi di un'istanza che non è stata avviata completamente, puoi abilitare l'accesso
interattivo alla console seriale, che ti consente di connetterti e interagire con qualsiasi
porta seriale dell'istanza. Ad esempio, puoi eseguire direttamente i comandi
e rispondere ai prompt nella porta seriale.
Quando attivi o disattivi la porta seriale, puoi utilizzare qualsiasi valore booleano accettato dal server dei metadati. Per maggiori informazioni, vedi Valori booleani.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è
il processo mediante il quale la tua identità viene verificata per l'accesso ai Google Cloud servizi e alle API.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- Nella console Google Cloud , vai alla pagina Metadati
- Fai clic su Modifica per modificare le voci dei metadati.
- Aggiungi una nuova voce che utilizzi la chiave serial-port-enable e il valore TRUE.
- Salva le modifiche.
- Nella console Google Cloud , vai alla pagina Istanze VM.
- Fai clic sull'istanza per cui vuoi attivare l'accesso.
- Fai clic su Modifica.
- Nella sezione Accesso remoto, seleziona la casella di controllo Abilita connessione a porte seriali.
- Salva le modifiche.
- Nella console Google Cloud , vai alla pagina Istanze VM.
- Fai clic sull'istanza a cui vuoi connetterti.
- In Dettagli, fai clic su Connetti alla console seriale per connetterti alla porta predefinita (porta 1).
- Se vuoi connetterti a un'altra porta seriale, fai clic sulla Freccia giù accanto al pulsante Connetti a console seriale e modifica il numero di porta di conseguenza.
- Per le istanze Windows, apri il menu a discesa accanto al pulsante e connettiti alla porta 2 per accedere alla console seriale.
VM_NAME
: il nome della VM a cui vuoi connetterti tramite la console seriale.PORT_NUMBER
: il numero di porta a cui vuoi connetterti. Per le VM Linux, utilizza1
, per le VM Windows, utilizza2
. Per scoprire di più sui numeri di porta, consulta Informazioni sulla numerazione delle porte seriali.Per connetterti a una VM Linux:
ssh -i PRIVATE_SSH_KEY_FILE -p 9600 PROJECT_ID.ZONE.VM_NAME.USERNAME.OPTIONS@REGION-ssh-serialport.googleapis.com
Per connetterti a una 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
: La chiave privata SSH per l'istanza.PROJECT_ID
: l'ID progetto per questa istanza VM.ZONE
: la zona dell'istanza VM.REGION
: La regione dell'istanza VM.VM_NAME
: Il nome dell'istanza VM.USERNAME
: il nome utente che utilizzi per connetterti all'istanza. In genere, si tratta del nome utente sulla macchina locale.OPTIONS
: opzioni aggiuntive che puoi specificare per questa connessione. Ad esempio, puoi specificare una determinata porta seriale e qualsiasi opzione avanzata. Il numero di porta può essere compreso tra 1 e 4, inclusi. Per saperne di più sui numeri di porta, consulta Informazioni sulla numerazione delle porte seriali. Se omesso, ti connetterai alla porta seriale 1.Scarica la chiave host SSH per la console seriale che utilizzerai:
Per le connessioni regionali, la chiave host SSH per una regione è disponibile all'indirizzo
https://www.gstatic.com/vm_serial_port_public_keys/REGION/REGION.pub
Per le connessioni globali, scarica la chiave host SSH della porta seriale di Google.
Apri il file degli host conosciuti, in genere si trova in
~/.ssh/known_hosts
.Aggiungi i contenuti della chiave host SSH, con il nome host del server anteposto alla chiave. Ad esempio, se la chiave del server us-central1 contiene la riga
ssh-rsa AAAAB3NzaC1yc...
,~/.ssh/known_hosts
deve contenere una riga come questa:[us-central1-ssh-serialport.googleapis.com]:9600 ssh-rsa AAAAB3NzaC1yc...
- Chiudi la finestra o la scheda del browser che contiene la connessione alla console seriale.
- Premi il tasto
ENTER
. - Digita
~.
(tilde, seguito da un punto). - Premi il tasto
ENTER
. - Digita
~.
(tilde, seguito da un punto). La combinazione di tasti
CTRL+ALT+DELETE
o altre combinazioni simili. Non funziona perché la console seriale non riconosce le combinazioni di tasti della tastiera del PC.Il comando
exit
ologout
non funziona perché l'ospite non è a conoscenza di alcuna connessione di rete o modem. L'utilizzo di questo comando comporta la chiusura e la riapertura della console e la connessione alla sessione rimane attiva. Se vuoi attivare i comandiexit
elogout
per la tua sessione, puoi farlo impostando l'opzioneon-dtr-low
.Nella console Google Cloud , vai alla pagina Istanze VM.
Nella colonna Nome, fai clic sul nome della VM per cui vuoi aggiungere una password locale.
Viene visualizzata la pagina dei dettagli della VM.
Fai clic su
Modifica.Si apre la pagina per modificare i dettagli della VM.
Nella sezione Metadati > Automazione, segui questi passaggi:
Se la VM ha uno script di avvio esistente, rimuovilo e archivialo in un posto sicuro.
Aggiungi il seguente script di avvio:
#!/bin/bash useradd USERNAME echo 'USERNAME:PASSWORD' | chpasswd usermod -aG google-sudoers USERNAME
Sostituisci quanto segue:
USERNAME
: il nome utente che vuoi aggiungere.PASSWORD
: la password per il nome utente. Poiché alcuni sistemi operativi richiedono una lunghezza e una complessità minime della password, specifica una password come segue:Utilizza almeno 12 caratteri.
Utilizza una combinazione di lettere maiuscole e minuscole, numeri e simboli.
Fai clic su Salva.
Viene visualizzata la pagina dei dettagli della VM.
Fai clic su Reimposta.
Quando richiesto, inserisci i dati di accesso.
Nella console Google Cloud , vai alla pagina Istanze VM.
Nella colonna Nome, fai clic sul nome della VM per cui vuoi aggiungere una password locale.
Viene visualizzata la pagina dei dettagli della VM.
Fai clic su
Modifica.Si apre la pagina per modificare i dettagli della VM.
Nella sezione Metadati, segui questi passaggi:
Se la VM ha uno script di avvio esistente, archivialo in un luogo sicuro, quindi, per eliminarlo, fai clic su
Elimina elemento.Fai clic su Aggiungi elemento.
Nel campo Chiave, inserisci
windows-startup-script-cmd
.Nel campo Valore, inserisci il seguente script:
net user USERNAME PASSWORD /ADD /Y net localgroup administrators USERNAME /ADD
Sostituisci quanto segue:
USERNAME
: il nome utente che vuoi aggiungere.PASSWORD
: la password per il nome utente. Poiché alcuni sistemi operativi richiedono una lunghezza e una complessità minime della password, specifica una password come segue:Utilizza almeno 12 caratteri.
Utilizza una combinazione di lettere maiuscole e minuscole, numeri e simboli.
Fai clic su Salva.
Viene visualizzata la pagina dei dettagli della VM.
Fai clic su Reimposta.
Quando richiesto, inserisci i dati di accesso.
Connettiti alla VM. Sostituisci
instance-name
con il nome della tua istanza.gcloud compute ssh instance-name
Sulla VM, crea una password locale con il comando seguente. Questa azione imposta una password per l'utente con cui hai eseguito l'accesso.
sudo passwd $(whoami)
Segui le istruzioni per creare una password.
A questo punto, esci dall'istanza e connettiti alla console seriale.
Quando richiesto, inserisci i dati di accesso.
Attiva il servizio temporaneamente fino al riavvio successivo:
sudo systemctl start serial-getty@ttyS1.service
Attiva il servizio in modo permanente a partire dal riavvio successivo:
sudo systemctl enable serial-getty@ttyS1.service
Apri il prompt dei comandi come amministratore
Modifica la porta EMS da COM2 a COM1:
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:9600
Riavvia la VM
- Premi il tasto
ENTER
. - Digita
~B
(tilde, seguito daB
maiuscolo). - Digita il comando Magic SysRq.
- Nella console Google Cloud , vai alla pagina Esplora log.
- Espandi il menu a discesa e seleziona Istanza VM GCE.
- Nella barra di ricerca, digita
ssh-serialport.googleapis.com
e premi Invio. - Viene visualizzato un elenco di audit log. I log descrivono le connessioni e le disconnessioni da una console seriale. Espandi una qualsiasi delle voci per visualizzare ulteriori informazioni.
- Espandi la proprietà
protoPayload
. - Cerca
methodName
per visualizzare l'attività a cui si applica questo log (una richiesta di connessione o disconnessione). Ad esempio, se questo log tiene traccia di una disconnessione dalla console seriale, il nome del metodo sarà"google.ssh-serialport.v1.disconnect"
. Allo stesso modo, un log di connessione indicherebbe"google.ssh-serialport.v1.connect"
. Una voce di log di controllo viene registrata all'inizio e alla fine di ogni sessione sulla console seriale. google.rpc.Code.INVALID_ARGUMENT
: La connessione non è riuscita perché il client ha fornito un numero di porta non valido o ha tentato di raggiungere un canale sconosciuto. Consulta l'elenco dei numeri di porta validi.google.rpc.Code.PERMISSION_DENIED
: Non hai attivato la console seriale interattiva nel server metadati. Per ulteriori informazioni, vedi Attivazione dell'accesso interattivo alla console seriale.google.rpcCode.UNAUTHENTICATED
: Nessuna chiave SSH trovata o nessuna chiave SSH corrispondente trovata per questa istanza. Verifica di aver eseguito l'autenticazione all'istanza VM.google.rpc.Code.UNKNOWN
: Si è verificato un errore sconosciuto con la tua richiesta. Puoi contattare Google nel gruppo di discussione gce o inviare una segnalazione di bug.Se hai difficoltà a connetterti utilizzando un client SSH standard, ma
gcloud compute connect-to-serial-port
si connette correttamente, potrebbe essere utile eseguiregcloud compute connect-to-serial-port
con l'opzione della riga di comando--dry-run
per visualizzare il comando SSH che avrebbe eseguito per tuo conto e confrontare le opzioni con il comando che stai utilizzando.Se utilizzi una VM Windows con OS Login attivato e riscontri un errore
UNAUTHENTICATED
, verifica che le chiavi SSH pubbliche siano state pubblicate nei metadati del progetto o dell'istanza. Per saperne di più, consulta Gestione delle chiavi SSH nei metadati.Impostando la velocità in bit, nota anche come velocità di trasmissione baud, puoi impostare qualsiasi velocità in bit che preferisci, ad esempio
stty 9600
, ma la funzionalità in genere forza la velocità effettiva a 115.200 bps (~11,5 kB/sec). Questo perché molte immagini pubbliche utilizzano per impostazione predefinita bitrate lenti, ad esempio 9600 sulla console seriale, e si avviano lentamente.Alcune immagini del sistema operativo hanno impostazioni predefinite scomode sulla porta seriale. Ad esempio, su CentOS 7, il valore predefinito di
stty icrnl
per il tasto Invio sulla console è l'invio di unCR
, noto anche come^M
. La shell bash potrebbe mascherare questo problema finché non provi a impostare una password, a quel punto potresti chiederti perché sembra bloccata al promptpassword:
.Alcune immagini pubbliche hanno chiavi di controllo dei job disattivate per impostazione predefinita se colleghi una shell a una porta in determinati modi. Alcuni esempi di queste chiavi includono
^Z
e^C
. Il comandosetsid
potrebbe risolvere il problema. In caso contrario, se vedi un messaggiojob control is disabled in this shell
, fai attenzione a non eseguire comandi che dovrai interrompere.Potrebbe essere utile comunicare al sistema le dimensioni della finestra che stai utilizzando, in modo che bash e gli editor possano gestirla correttamente. In caso contrario, potresti riscontrare un comportamento strano del display perché bash o gli editor tentano di manipolare il display in base a ipotesi errate sul numero di righe e colonne disponibili. Utilizza il comando
stty rows Y cols X
e il flagstty -a
per vedere qual è l'impostazione. Ad esempio:stty rows 60 cols 120
(se la finestra è 120 caratteri per 60 righe).Se, ad esempio, ti connetti tramite SSH dalla macchina A alla macchina B e poi alla macchina C, creando una sessione SSH nidificata, e vuoi utilizzare i comandi con la tilde (~) per disconnetterti o inviare un segnale di interruzione seriale, dovrai aggiungere un numero sufficiente di caratteri tilde aggiuntivi al comando per raggiungere il client SSH corretto. Un comando che segue una singola tilde viene interpretato dal client SSH sulla macchina A; un comando che segue due tilde consecutive (Invio~~) viene interpretato dal client sulla macchina B e così via. Devi premere Invio una sola volta perché il comando viene passato fino alla destinazione SSH più interna. Questo vale per qualsiasi utilizzo di client SSH che forniscono la funzionalità di escape con la tilde.
Se non ricordi quanti caratteri tilde ti servono, premi Invio e poi digita i caratteri tilde uno alla volta finché l'istanza non li ripete. Questo echo indica che hai raggiunto la fine della catena e che ora sai che per inviare un comando con la tilde al client SSH più nidificato, ti serve una tilde in meno rispetto a quelle che hai digitato.
replay-lines=N
: impostaN
sul numero di righe che vuoi riprodurre. Ad esempio, seN
è 50, vengono incluse le ultime 50 righe dell'output della console.replay-bytes=N
: riproduce gli ultimiN
byte. Puoi anche impostareN
sunew
, che riproduce tutto l'output non ancora inviato a nessun client.replay-from=N
: Riproduce l'output a partire da un indice di byte assoluto che fornisci. Puoi ottenere l'indice di byte corrente dell'output della console seriale effettuando una richiestagetSerialPortOutput
. Se impostireplay-from
, tutte le altre opzioni di riproduzione vengono ignorate.replay-lines=N
ereplay-bytes=new
- Riproduci il numero specificato di righe OPPURE riproduci tutto l'output non inviato in precedenza
a nessun client, a seconda di quale sia maggiore. Il primo client a connettersi con questa combinazione di flag vedrà tutto l'output inviato alla porta seriale, mentre i client che si connettono successivamente vedranno solo le ultime
N
righe. Esempi: replay-lines=N
ereplay-bytes=M
- La riproduzione si allinea fino al numero di righe o byte descritti da questi flag, a seconda di quale sia inferiore, ma non lo supera. Questa opzione non riproduce più di
N
oM
byte. insert-stderr-note
: inserisci una nota instderr
del client SSH che indichi che l'output è stato eliminato. Questa è l'opzione predefinita.ignore
: elimina silenziosamente l'output e non fa nulla.disconnect
: interrompi la connessione.- Scopri di più sull'API
getSerialPortOutput
. - Scopri come conservare e visualizzare l'output della porta seriale anche dopo l'eliminazione di un'istanza VM.
- Leggi altri suggerimenti per la risoluzione dei problemi.
- Scopri di più sull'applicazione dei metadati.
- Scopri di più sulle chiavi SSH.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .
Abilitazione dell'accesso interattivo alla console seriale
Abilita l'accesso interattivo alla console seriale per singole istanze VM o per un intero progetto.
Abilitazione dell'accesso per un progetto
L'abilitazione dell'accesso alla console seriale interattiva su un progetto consente l'accesso a tutte le istanze VM che fanno parte di quel progetto.
Per impostazione predefinita, l'accesso alla porta seriale interattiva è disattivato. Puoi anche disattivarla in modo esplicito impostando la chiave
serial-port-enable
suFALSE
. In entrambi i casi, qualsiasi impostazione per istanza sostituisce l'impostazione a livello di progetto o l'impostazione predefinita.Console
gcloud
Utilizzando Google Cloud CLI, inserisci il comando
project-info add-metadata
come segue:gcloud compute project-info add-metadata \ --metadata serial-port-enable=TRUE
REST
Nell'API, invia una richiesta al metodo
projects().setCommonInstanceMetadata
, fornendo la chiaveserial-port-enable
con un valore diTRUE
:{ "fingerprint": "FikclA7UBC0=", "items": [ { "key": "serial-port-enable", "value": "TRUE" } ] }
Abilitazione dell'accesso per un'istanza VM
Abilita l'accesso alla console seriale interattiva per un'istanza specifica. Un'impostazione per istanza, se esistente, sostituisce qualsiasi impostazione a livello di progetto. Puoi anche disattivare l'accesso per un'istanza specifica, anche se l'accesso è attivato a livello di progetto, impostando
serial-port-enable
suFALSE
anziché suTRUE
. Allo stesso modo, puoi attivare l'accesso per una o più istanze anche se è disattivato per il progetto, in modo esplicito o per impostazione predefinita.Console
gcloud
Utilizzando Google Cloud CLI, inserisci il comando
instances add-metadata
, sostituendoinstance-name
con il nome della tua istanza.gcloud compute instances add-metadata instance-name \ --metadata serial-port-enable=TRUE
REST
Nell'API, invia una richiesta al metodo
instances().setMetadata
con la chiaveserial-port-enable
e un valore diTRUE
: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" } ] }
Configura la console seriale per un'istanza bare metal
Per le istanze bare metal, aumenta la velocità in bit, nota anche come velocità di trasmissione, per la console seriale a 115.200 bit/s (~11,5 kB/sec). L'utilizzo di una velocità inferiore comporta un output della console illeggibile o mancante.
La configurazione del bootloader varia in base ai sistemi operativi e alle versioni del sistema operativo. Per istruzioni, consulta la documentazione del distributore del sistema operativo.
Se modifichi il velocità in bit sulla riga di comando per la sessione corrente, utilizza un comando simile al seguente:
console=ttyS0,115200
Se modifichi la configurazione di GRUB, utilizza un comando simile al seguente:
serial --speed=115200
Assicurati di aggiornare la configurazione del bootloader effettiva. Puoi farlo con
update-grub
,grub2-mkconfig
o un comando simile.Connessione a una console seriale
Compute Engine offre gateway della console seriale regionali per ogni Google Cloud regione. Dopo aver abilitato l'accesso interattivo alla console seriale di una VM, puoi connetterti a una console seriale regionale.
La console seriale autentica gli utenti con chiavi SSH. In particolare, devi aggiungere la tua chiave SSH pubblica ai metadati del progetto o dell'istanza e archiviare la chiave privata sulla macchina locale da cui vuoi connetterti. gcloud CLI e la console Google Cloud aggiungono automaticamente le chiavi SSH al progetto. Se utilizzi un client di terze parti, potresti dover aggiungere le chiavi SSH manualmente.
Se utilizzi un client di terze parti, puoi anche convalidare la connessione utilizzando le chiavi host della console seriale. Quando utilizzi Google Cloud CLI per connetterti, l'autenticazione della chiave host viene eseguita automaticamente per tuo conto.
Console
Per connetterti alla console seriale regionale di una VM:
gcloud
Per connetterti alla console seriale regionale di una VM, utilizza il comando
gcloud compute connect-to-serial-port
:gcloud compute connect-to-serial-port VM_NAME
--port=PORT_NUMBERSostituisci quanto segue:
Altri client SSH
Puoi connetterti alla console seriale di un'istanza utilizzando altri client SSH di terze parti, a condizione che il client ti consenta di connetterti alla porta TCP 9600. Prima di connetterti, puoi facoltativamente convalidare la connessione utilizzando le chiavi host della console seriale.
Per connetterti alla console seriale regionale di una VM, esegui uno dei seguenti comandi, a seconda del sistema operativo della VM:
Sostituisci quanto segue:
Se hai difficoltà a connetterti utilizzando un client SSH di terze parti, puoi eseguire il comando
gcloud compute connect-to-serial-port
con l'opzione della riga di comando--dry-run
per visualizzare il comando SSH che avrebbe eseguito per tuo conto. Poi puoi confrontare le opzioni con il comando che stai utilizzando.Convalidare le connessioni client SSH di terze parti
Quando utilizzi un client SSH di terze parti diverso dalla Google Cloud CLI, ti consigliamo di verificare di essere protetto da attacchi di impersonificazione o man-in-the-middle controllando la chiave host SSH della porta seriale di Google. Per configurare il sistema in modo da controllare la chiave host SSH, completa i seguenti passaggi:
Per motivi di sicurezza, Google potrebbe occasionalmente modificare la chiave host SSH della porta seriale Google. Se il client non riesce ad autenticare la chiave del server, interrompi immediatamente il tentativo di connessione e completa i passaggi precedenti per scaricare una nuova chiave host SSH della porta seriale di Google.
Se, dopo aver aggiornato la chiave host, continui a ricevere un errore di autenticazione host dal client, interrompi i tentativi di connessione alla porta seriale e contatta l'Assistenza Google. Non fornire credenziali su una connessione in cui l'autenticazione host non è riuscita.
Disconnessione dalla console seriale
Per disconnetterti dalla console seriale, segui le istruzioni per il metodo che hai utilizzato per connetterti.
Console
Nella console Google Cloud , disconnettiti dalla console seriale nel seguente modo:
gcloud
In Google Cloud CLI, disconnettiti dalla console seriale nel seguente modo:
Altri client SSH
In altri client SSH, disconnettiti dalla console seriale procedendo nel seguente modo:
In Google Cloud CLI o utilizzando SSH, puoi scoprire altri comandi digitando
~?
. Puoi anche esaminare la pagina man di SSH con il seguente comando:man ssh
Non tentare di scollegare il dispositivo utilizzando uno dei seguenti metodi:
Connessione a una console seriale con una richiesta di accesso
Se stai tentando di risolvere un problema con una VM che è stata avviata completamente o un problema che si verifica dopo l'avvio della VM in modalità utente singolo, potrebbe esserti chiesto di inserire le credenziali di accesso quando tenti di accedere alla console seriale.
Per impostazione predefinita, le immagini di sistema Linux fornite da Google non sono configurate per consentire gli accessi basati su password per gli utenti locali. Tuttavia, le immagini Windows fornite da Google sono configurate per consentire gli accessi basati su password per gli utenti locali.
Se la tua VM esegue un'immagine preconfigurata con accessi alla porta seriale, devi configurare una password locale sulla VM in modo da poter accedere alla console seriale, se richiesto. Puoi configurare una password locale dopo aver eseguito la connessione alla VM o utilizzando uno script di avvio.
Configurazione di una password locale utilizzando uno script di avvio
Puoi utilizzare uno script di avvio per configurare una password locale che ti consenta di connetterti alla console seriale durante o dopo la creazione della VM.
Per configurare una password locale in una VM esistente, seleziona una delle seguenti opzioni:
Linux
Windows
Dopo aver creato l'utente, sostituisci lo script di avvio con quello che hai memorizzato in questa sezione.
Configurazione di una password locale utilizzando
passwd
sulla VMLe seguenti istruzioni descrivono come configurare una password locale per un utente su una VM in modo che l'utente possa accedere alla console seriale della VM utilizzando la password specificata.
Configurazione di un accesso su altre porte seriali
I prompt di accesso sono attivati sulla porta 1 per impostazione predefinita su tutte le immagini pubbliche Linux che utilizzano la gestione dei servizi
systemd
. Per le immagini Windows, le richieste di accesso sono attive sulla porta 2 per impostazione predefinita e gestite da Gestione dispositivi. Tuttavia, la porta 1 può spesso essere sovraccarica di dati di logging e altre informazioni stampate sulla porta. In alternativa, puoi scegliere di attivare una richiesta di accesso su un'altra porta, ad esempio la porta 2 (ttyS1), eseguendo il seguente comando sulla VM:Linux
Per i sistemi operativi Linux che utilizzano
systemd
:Windows
Per i sistemi operativi Windows:
Informazioni sulla numerazione delle porte seriali
Ogni istanza di macchina virtuale ha quattro porte seriali. Per coerenza con l'API
getSerialPortOutput
, ogni porta è numerata da 1 a 4. Linux e altri sistemi simili numerano le porte seriali da 0 a 3. Ad esempio, in molte immagini del sistema operativo, i dispositivi corrispondenti sono/dev/ttyS0
fino a/dev/ttyS3
. Windows fa riferimento alle porte seriali comeCOM1
-COM4
. Per connetterti a ciò che Windows consideraCOM3
e Linux considerattyS2
, devi specificare la porta 3. Utilizza la seguente tabella per capire a quale porta vuoi connetterti.Porte seriali dell'istanza di macchina virtuale Porte seriali Linux standard Porte COM di Windows 1
/dev/ttyS0
COM1
2
/dev/ttyS1
COM2
3
/dev/ttyS2
COM3
4
/dev/ttyS3
COM4
Tieni presente che molte immagini Linux utilizzano la porta 1 (
/dev/ttyS0
) per registrare i messaggi provenienti dal kernel e dai programmi di sistema.Invio di un'interruzione seriale
La funzionalità Tasto Magic SysRq ti consente di eseguire attività di basso livello indipendentemente dallo stato del sistema. Ad esempio, puoi sincronizzare i file system, riavviare l'istanza, terminare i processi e smontare i file system utilizzando la funzionalità del tasto Magic SysRq.
Per inviare un comando Magic SysRq utilizzando un'interruzione seriale simulata:
Visualizzazione degli audit log della console seriale
Compute Engine fornisce log di controllo per monitorare chi si è connesso e disconnesso dalla console seriale di un'istanza. Per visualizzare i log, devi disporre delle autorizzazioni per Logs Viewer o essere un visualizzatore o un editor del progetto.
Per qualsiasi log di controllo, puoi:
Esistono diverse proprietà dei log di controllo per diversi tipi di log. Ad esempio, i log di controllo relativi alle connessioni hanno proprietà specifiche per i log di connessione, mentre i log di controllo per le disconnessioni hanno un proprio insieme di proprietà. Esistono determinate proprietà dei log di controllo che vengono condivise anche tra entrambi i tipi di log.
Tutti i log della console seriale
La seguente tabella fornisce le proprietà del log di controllo e i relativi valori per tutti i log della console seriale:
Proprietà Valore requestMetadata.callerIp
L'indirizzo IP e il numero di porta da cui ha avuto origine la connessione. serviceName
ssh-serialport.googleapis.com
resourceName
Una stringa contenente l'ID progetto, la zona, il nome dell'istanza e il numero di porta seriale per indicare a quale console seriale si riferisce. Ad esempio, projects/myproject/zones/us-east1-a/instances/example-instance/SerialPort/2
è il numero di porta 2, noto anche come COM2 o /dev/ttyS1, per l'istanzaexample-instance
.resource.labels
Proprietà che identificano l'ID istanza, la zona e l'ID progetto. timestamp
Un timestamp che indica l'inizio o la fine della sessione. severity
NOTICE
operation.id
Una stringa ID che identifica in modo univoco la sessione. Puoi utilizzarla per associare una voce di disconnessione alla voce di connessione corrispondente. operation.producer
ssh-serialport.googleapis.com
Log delle connessioni
La tabella seguente fornisce le proprietà del log di controllo e i relativi valori specifici per i log di connessione:
Proprietà Valore methodName
google.ssh-serialport.v1.connect
status.message
Connection succeeded.
request.serialConsoleOptions
Eventuali opzioni specifiche nella richiesta, incluso il numero di porta seriale. request.@type
type.googleapis.com/google.compute.SerialConsoleSessionBegin
request.username
Il nome utente specificato per questa richiesta. Viene utilizzata per selezionare la chiave pubblica da abbinare. operation.first
TRUE
status.code
Per le richieste di connessione riuscite, un valore status.code
pari agoogle.rpc.Code.OK
indica che l'operazione è stata completata correttamente senza errori. Poiché il valore enum per questa proprietà è0
, la proprietàstatus.code
non viene visualizzata. Tuttavia, qualsiasi codice che controlla un valorestatus.code
digoogle.rpc.Code.OK
funzionerà come previsto.Log di disconnessione
La tabella seguente fornisce le proprietà del log di controllo e i relativi valori specifici per i log di disconnessione:
Proprietà Valore methodName
google.ssh-serialport.v1.disconnect
response.duration
La durata della sessione in secondi. response.@type
type.googleapis.com/google.compute.SerialConsoleSessionEnd
operation.last
TRUE
Log delle connessioni non riuscite
Quando una connessione non va a buon fine, Compute Engine crea una voce di log di controllo. Un log di connessione non riuscita è molto simile a una voce di connessione riuscita, ma presenta le seguenti proprietà per indicare una connessione non riuscita.
Proprietà Valore severity
ERROR
status.code
Il codice di errore canonico dell'API Google che descrive meglio l'errore. Di seguito sono riportati i possibili codici di errore che potrebbero essere visualizzati:
status.message
Il messaggio leggibile per questa voce. Disattivazione dell'accesso alla console seriale interattiva
Puoi disattivare l'accesso interattivo alla console seriale modificando i metadati dell'istanza o del progetto specifici oppure impostando un criterio dell'organizzazione che disattiva l'accesso interattivo alla console seriale per tutte le istanze VM di uno o più progetti che fanno parte dell'organizzazione.
Disattivazione della console seriale interattiva su una determinata istanza o progetto
I proprietari e gli editor del progetto, nonché gli utenti a cui è stato concesso il ruolo
compute.instanceAdmin.v1
, possono disattivare l'accesso alla console seriale modificando i metadati della particolare istanza o del progetto. Analogamente all'abilitazione dell'accesso alla console seriale, imposta i metadatiserial-port-enable
suFALSE
:serial-port-enable=FALSE
Ad esempio, utilizzando Google Cloud CLI, puoi applicare questi metadati a un'istanza specifica nel seguente modo:
gcloud compute instances add-metadata instance-name \ --metadata=serial-port-enable=FALSE
Per applicare i metadati al progetto:
gcloud compute project-info add-metadata \ --metadata=serial-port-enable=FALSE
Disattivazione dell'accesso alla console seriale interattiva tramite il criterio dell'organizzazione
Se ti è stato concesso il ruolo
orgpolicy.policyAdmin
nell'organizzazione, puoi impostare un criterio dell'organizzazione che impedisce l'accesso interattivo alla console seriale, indipendentemente dal fatto che l'accesso interattivo alla console seriale sia abilitato sul server dei metadati. Una volta impostata la policy dell'organizzazione, questa esegue l'override effettivo della chiave di metadatiserial-port-enable
e nessun utente dell'organizzazione o del progetto può attivare l'accesso interattivo alla console seriale. Per impostazione predefinita, questo vincolo è impostato suFALSE
.Il vincolo per disabilitare l'accesso alla console seriale interattiva è il seguente:
compute.disableSerialPortAccess
Completa le seguenti istruzioni per impostare questo criterio nell'organizzazione. Dopo aver configurato un criterio, puoi concedere esenzioni a livello di progetto.
gcloud
Per impostare il criterio utilizzando Google Cloud CLI, esegui il comando
resource-manager enable-enforce
. Sostituisciorganization-id
con l'ID organizzazione. Ad esempio:1759840282
.gcloud resource-manager org-policies enable-enforce \ --organization organization-id compute.disableSerialPortAccess
REST
Per impostare un criterio nell'API, invia una richiesta
POST
al seguente URL. Sostituisciorganization-name
con il nome dell'organizzazione. Ad esempio:organizations/1759840282
.POST https://cloudresourcemanager.googleapis.com/v1/organization-name:setOrgPolicy
Il corpo della richiesta deve contenere un oggetto
policy
con il seguente vincolo:"constraint": "constraints/compute.disableSerialPortAccess"
Ad esempio:
{ "policy": { "booleanPolicy": { "enforced": TRUE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
La norma ha effetto immediato, quindi tutti i progetti dell'organizzazione interrompono immediatamente l'accesso interattivo alla console seriale.
Per disattivare temporaneamente la policy, utilizza il comando
disable-enforce
:gcloud resource-manager org-policies disable-enforce \ --organization organization-id compute.disableSerialPortAccess
In alternativa, puoi effettuare una richiesta API in cui il corpo della richiesta imposta il parametro
enforced
suFALSE
:{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Impostazione della policy dell'organizzazione a livello di progetto
Puoi impostare le stesse norme dell'organizzazione per ogni progetto. Questa impostazione sostituisce quella a livello di organizzazione.
gcloud
Per disattivare l'applicazione di questa policy per un progetto specifico. Sostituisci
project-id
con l'ID progetto.gcloud resource-manager org-policies disable-enforce \ --project project-id compute.disableSerialPortAccess
Puoi attivare l'applicazione di questo criterio utilizzando il comando
enable-enforce
con gli stessi valori.REST
Nell'API, invia una richiesta
POST
al seguente URL per attivare l'accesso alla console seriale interattiva per il progetto, sostituendoproject-id
con l'ID progetto:POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setOrgPolicy
Il corpo della richiesta deve contenere un oggetto
policy
con il seguente vincolo:"constraint": "constraints/compute.disableSerialPortAccess"
Ad esempio:
{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Suggerimenti utili
Opzioni avanzate
Puoi anche utilizzare le seguenti opzioni avanzate con la porta seriale.
Controllare il numero massimo di connessioni
Puoi impostare la proprietà
max-connections
per controllare quante connessioni simultanee possono essere effettuate a questa porta seriale alla volta. Il numero predefinito e massimo di connessioni è 5. Ad esempio: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
Impostare le opzioni di riproduzione
Per impostazione predefinita, ogni volta che ti connetti alla console seriale, riceverai una riproduzione delle ultime 10 righe di dati, indipendentemente dal fatto che le ultime 10 righe siano state visualizzate da un altro client SSH. Puoi modificare questa impostazione e controllare quante e quali righe vengono restituite impostando le seguenti opzioni:
Con Google Cloud CLI, aggiungi quanto segue al comando
connect-to-serial-port
, doveN
è il numero specificato di righe (o byte o indice di byte assoluto, a seconda dell'opzione di riproduzione che stai selezionando):--extra-args replay-lines=N
Se utilizzi un client SSH di terze parti, fornisci questa opzione nel comando 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
Puoi anche utilizzare una combinazione di queste opzioni. Ad esempio:
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
Gestione dell'output eliminato
L'ultimo MiB di output per ogni porta seriale è sempre disponibile e in genere il client SSH non dovrebbe perdere alcun output dalla porta seriale. Se, per qualche motivo, il client SSH smette di accettare l'output per un periodo di tempo, ma non si disconnette e vengono prodotti più di 1 MiB di nuovi dati, il client SSH potrebbe perdere parte dell'output. Quando il client SSH non accetta i dati abbastanza velocemente da tenere il passo con l'output sulla porta della console seriale, puoi impostare la proprietà
on-dropped-output
per determinare il comportamento della console.Imposta una delle seguenti opzioni applicabili con questa proprietà:
Ad esempio:
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
Attivazione della disconnessione tramite i comandi di uscita o disconnessione
Puoi attivare i comandi di disconnessione all'uscita o al logout impostando la proprietà
on-dtr-low
sudisconnect
quando ti connetti alla console seriale.In Google Cloud CLI, aggiungi il seguente flag al comando
connect-to-serial-port
:--extra-args on-dtr-low=disconnect
Se utilizzi un client SSH di terze parti, fornisci questa opzione nel comando 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
L'attivazione dell'opzione
disconnect
potrebbe causare la disconnessione dell'istanza una o più volte durante il riavvio, perché il sistema operativo reimposta le porte seriali durante l'avvio.L'impostazione predefinita per l'opzione
on-dtr-low
ènone
. Se utilizzi l'impostazione predefinitanone
, puoi riavviare l'istanza senza disconnetterti dalla console seriale, ma la console non si disconnetterà con mezzi normali come i comandiexit
ologout
o le normali combinazioni di tasti come Ctrl+D.Passaggi successivi
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-07-09 UTC.
-