Questa pagina descrive come abilitare l'accesso interattivo allo spazio di archiviazione console seriale per eseguire il debug di problemi di avvio e rete e risolvere i malfunzionamenti di Compute Engine, interagire con il Bootloader Unified GRand (GRUB) ed eseguire altre attività di risoluzione dei problemi.
Un'istanza di una macchina virtuale (VM) ha quattro porte seriali virtuali. L'interazione con una porta seriale è simile all'utilizzo di una finestra di terminale, in quanto l'input e l'output sono interamente in modalità di testo e non è presente un'interfaccia grafica o il supporto del mouse. Il sistema operativo, il BIOS e altri elementi a livello di sistema dell'istanza spesso scrivono l'output sulle porte seriali e possono accettare input come sotto forma di comandi o di risposte a prompt. Di solito, queste entità a livello di sistema utilizzano la prima porta seriale (porta 1) e la porta seriale 1 è spesso definita nella console seriale.
Se devi solo visualizzare l'output della porta seriale senza inviare alcun comando
console seriale, puoi chiamare il
getSerialPortOutput
o usa Cloud Logging per leggere le informazioni
scritto in
dalla porta seriale, vedi
Visualizzazione dei log delle porte seriali.
Tuttavia, se riscontri problemi ad accedere all'istanza mediante SSH o devi
risolvere i problemi di un'istanza non completamente avviata, puoi abilitare
alla console seriale che ti consente di connetterti e interagire
alle porte seriali dell'istanza. Ad esempio, puoi eseguire direttamente 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 ulteriori informazioni, vedi l'impostazione di valori booleani.
Prima di iniziare
-
Se non l'hai già fatto, configura l'autenticazione.
L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine come segue.
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.
- Nella console Google Cloud, vai alla pagina Metadati.
- Fai clic su Modifica per modificare le voci dei metadati.
- Aggiungi una nuova voce che utilizza la chiave serial-port-enable e il valore. VERO.
- Salva le modifiche.
- Nella console Google Cloud, vai alla pagina Istanze VM.
- Fai clic sull'istanza per la quale vuoi abilitare l'accesso.
- Fai clic su Modifica.
- Nella sezione Accesso remoto, attiva/disattiva Abilita connessione a la casella di controllo delle porte seriali.
- Salva le modifiche.
- Nella console Google Cloud, vai alla pagina Istanze VM.
- Fai clic sull'istanza a cui vuoi connetterti.
- In Accesso remoto, fai clic su Connetti alla console seriale per connettiti sulla porta predefinita (porta 1).
- Se vuoi connetterti a un'altra porta seriale, fai clic sulla Freccia giù al pulsante Connetti alla console seriale e cambia il numero di porta di conseguenza.
- Per le istanze Windows, apri il menu a discesa accanto a il pulsante e connettiti alla porta 2 per accedere alla console seriale.
VM_NAME
: il nome della VM di cui la console seriale a cui vuoi connetterti.PORT_NUMBER
: il numero di porta che vuoi connettere. Per le VM Linux, usa1
, per le VM Windows, usa2
. Per scoprire di più su numeri di porta, vedi 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 SSH privata per in esecuzione in un'istanza Compute Engine.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 la connessione alla tua istanza. In genere, si tratta del nome utente del computer locale.OPTIONS
: opzioni aggiuntive che puoi specificare 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 scoprire di più sui numeri di porta, vedi sulla numerazione delle porte seriali. Se omesso, ti connetterai alla porta seriale 1.- Scarica la chiave SSH del server per la console seriale che utilizzerai:
- Per le connessioni regionali, la chiave SSH del server per una regione è disponibile all'indirizzo
https://www.gstatic.com/vm_serial_port/region/region.pub
- Per le connessioni globali, scarica la chiave SSH del server della porta seriale di Google
- Per le connessioni regionali, la chiave SSH del server per una regione è disponibile all'indirizzo
- Apri il file degli host noti, che in genere si trova in
~/.ssh/known_hosts
. Aggiungi i contenuti della chiave SSH del server, con il nome host del server premesso alla chiave. Ad esempio, se la chiave server us-central1 contiene la riga
ssh-rsa AAAAB3NzaC1yc...
, poi~/.ssh/known_hosts
deve avere una riga nel seguente modo:[us-central1-ssh-serialport.googleapis.com]:9600 ssh-rsa AAAAB3NzaC1yc...
- Premi il tasto
ENTER
. - Digita
~.
(tilde, seguito da un punto). La combinazione di tasti
CTRL+ALT+DELETE
o altre combinazioni simili. Questo non funziona perché la console seriale non riconosce la tastiera del PC combinazioni.Il comando
exit
ologout
non funziona perché l'ospite non è a conoscenza di alcuna connessione di rete o modem. Se utilizzi questo comando, la console per chiudere e riaprire di nuovo, rimanendo connessi alla sessione. Se vuoi attivare i comandiexit
elogout
per la sessione, puoi farlo impostando l'opzioneon-dtr-low
.Nella console Google Cloud, vai alla pagina Istanze VM.
Seleziona la VM per cui vuoi aggiungere la password locale.
Fai clic su Modifica.
Linux
Vai a Metadati > Automazione.
Se nella VM esiste uno script di avvio, copialo e incollalo in un luogo 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. Evita semplici password, poiché alcuni sistemi operativi potrebbero richiedere una password minima lunghezza e complessità.
Windows
- Vai alla sezione Metadati personalizzati.
- Se la VM ha già uno script di avvio, copialo e incollalo in un luogo sicuro.
- 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
Fai clic su Salva.
Per riavviare la VM, fai clic su Reimposta. Per ulteriori informazioni, consulta Reimpostare una VM.
Quando richiesto, inserisci i dati di accesso.
Rimuovi lo script di avvio dalla VM dopo la creazione dell'utente.
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. Questo imposta una password per l'utente con cui hai effettuato l'accesso.
sudo passwd $(whoami)
Segui le istruzioni per creare una password.
Quindi, esci dall'istanza connettersi alla console seriale.
Quando richiesto, inserisci i dati di accesso.
Attiva temporaneamente il servizio 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
Crea un nuovo file
/etc/init/ttyS1.conf
per rifletterettyS1
copiando e modificando un filettyS0.conf
esistente. Ad esempio:Su Ubuntu 14.04:
sudo sh -c "sed -e s/ttyS0/ttyS1/g < /etc/init/ttyS0.conf > /etc/init/ttyS1.conf"
Su RHEL 6.8 e 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"
Avvia con una richiesta di accesso su
ttyS1
senza riavviare:sudo start ttyS1
- Premi il tasto
ENTER
. - Digita
~B
(tilde seguita 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 delle voci per avere ulteriori informazioni:
- Espandi la proprietà
protoPayload
. - Cerca
methodName
per vedere l'attività a cui si applica questo log (un una richiesta di connessione o disconnessione). Ad esempio, se questo log monitora una disconnessione dalla console seriale, il nome del metodo sarà"google.ssh-serialport.v1.disconnect"
. Analogamente, un log delle connessioni di'"google.ssh-serialport.v1.connect"
. Viene registrata una voce di audit log l'inizio e la 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 contattare un canale. Consulta l'elenco di numeri di porta validi.google.rpc.Code.PERMISSION_DENIED
: non hai attivato console seriale interattiva nel server dei metadati. Per ulteriori informazioni, vedi Attivazione in corso... l'accesso interattivo sulla console seriale.google.rpcCode.UNAUTHENTICATED
: nessuna chiave SSH trovata o nessuna chiave SSH corrispondente trovata per questa istanza. Verifica di avere autenticate nell'istanza VM.google.rpc.Code.UNKNOWN
: si è verificato un errore sconosciuto con il tuo 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 di riga di comando--dry-run
per vedere il comando SSH che sarebbe stato eseguito per tuo conto e confrontare le opzioni con il comando che stai utilizzando.Impostando la velocità in bit, anche nota come velocità in baud, puoi impostare qualsiasi velocità simili, come
stty 9600
, ma la funzionalità di solito forza la frequenza effettiva a 115.200 bps (~11,5kB/sec). Questo perché molte immagini pubbliche vengono parte lenta come 9600 sulla console seriale, e si avviano lentamente.Alcune immagini del sistema operativo presentano impostazioni predefinite sconvenienti sulla porta seriale. Ad esempio: su CentOS 7, il valore predefinito di
stty icrnl
per il tasto Invio sulla console è invia unCR
, chiamato anche^M
. La shell bash potrebbe mascherare questo finché non tenti di impostare una password, a quel punto potresti chiederti perché sembra bloccato al promptpassword:
.Alcune immagini pubbliche hanno chiavi di controllo dei job disabilitate per impostazione predefinita collegare 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 visualizzi un messaggiojob control is disabled in this shell
, fai attenzione a non eseguire comandi che dovrai interrompere.Potrebbe essere utile indicare al sistema le dimensioni della finestra in uso, in modo che bash e gli editor possano gestirla correttamente. In caso contrario, potresti riscontrare un comportamento anomalo della visualizzazione perché bash o gli editor tentano di manipolare la visualizzazione in base a presupposti errati sul numero di righe e colonne disponibili. Usa il comando
stty rows Y cols X
e il flagstty -a
per vedere l'impostazione. Ad esempio:stty rows 60 cols 120
(se la finestra è di 120 caratteri per 60 righe).Se, ad esempio, ti connetti tramite SSH dalla macchina A alla macchina B alla macchina C, creando una sessione SSH nidificata, e vuoi utilizzare tilde (~) per disconnettere o inviare un segnale di interruzione seriale, è necessario per aggiungere abbastanza caratteri tilde extra per il comando per arrivare al client SSH corretto. R seguito da una singola tilde viene interpretato dal client SSH la macchina A; un comando dopo due tilde consecutive (Enter~~) è interpretati dal client sulla macchina B e così via. Devi solo premere Inserisci una sola volta perché viene inviato fino alla destinazione SSH più interna. È vero per qualsiasi utilizzo di client SSH che forniscono la funzionalità di escape tilde.
Se non sai quanti caratteri tilde ti servono, premi il tasto Enter e poi digita i caratteri tilde uno alla volta finché l'istanza non li ripete. L'eco indica che hai raggiunto la fine del e la tua catena per inviare un comando tilde al client SSH più nidificato, hai bisogno di una tilde in meno rispetto al numero di tilde digitato.
replay-lines=N
: impostaN
sul numero di righe da riprodurre. Ad esempio, seN
è 50, vengono incluse le ultime 50 righe dell'output della console.replay-bytes=N
: riproduce iN
byte più recenti. Puoi anche impostareN
sunew
che riproduce tutti gli output che non sono ancora stati inviati 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 attuale dell'output della console serialegetSerialPortOutput
richiesta. Se impostireplay-from
, tutte le altre opzioni di riproduzione vengono ignorate.replay-lines=N
ereplay-bytes=new
- Riproduci nuovamente il numero di righe specificato OPPURE riproduci di nuovo tutti gli output non precedenti
inviati a qualsiasi cliente, a seconda di quale sia il più grande. Il primo client a connettersi
la combinazione di flag vedrà tutto l'output che è stato inviato
porta e i client che si connettono successivamente vedranno solo l'ultima
N
righe. Esempi: replay-lines=N
ereplay-bytes=M
- Riproduci righe fino al numero massimo di righe o byte
descritti da questi flag, a seconda di quale delle due opzioni è inferiore. Questa opzione non verrà più riprodotta
di
N
oM
byte. insert-stderr-note
: inserisci una nota nel filestderr
del client SSH che indica quell'output è stato eliminato. Questa è l'opzione predefinita.ignore
: ignora silenziosamente l'output e non fa nulla.disconnect
: interrompi la connessione.- Scopri di più sulle
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 dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.
Abilitazione dell'accesso interattivo nella console seriale
Abilita l'accesso alla console seriale interattiva per singole istanze VM o per di un intero progetto.
Abilitazione dell'accesso per un progetto
L'abilitazione dell'accesso alla console seriale interattiva su un progetto consente l'accesso a tutti di istanze VM che fanno parte di quel progetto.
L'accesso alle porte seriali interattive è disattivato per impostazione predefinita. Puoi anche indicare esplicitamente disattivalo impostando la chiave
serial-port-enable
suFALSE
. Nel in ogni caso, qualsiasi impostazione per istanza sostituisce l'impostazione a livello di progetto oppure l'impostazione predefinita.Console
gcloud
Tramite Google Cloud CLI, inserisci
project-info add-metadata
come segue:gcloud compute project-info add-metadata \ --metadata serial-port-enable=TRUE
REST
Nell'API, invia una richiesta
projects().setCommonInstanceMetadata
fornendo alla chiaveserial-port-enable
il valoreTRUE
:{ "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. Una per istanza esistente, sostituisce qualsiasi impostazione a livello di progetto. Puoi anche Disabilita l'accesso per un'istanza specifica, anche se l'accesso è abilitato per il progetto di fatturazione impostando
serial-port-enable
suFALSE
anziché suTRUE
. Analogamente, puoi abilitare l'accesso per una o più istanze anche se è disabilitato per il tipo esplicitamente o per impostazione predefinita.Console
gcloud
Tramite Google Cloud CLI, inserisci
instances add-metadata
sostituendoinstance-name
con il nome per l'istanza.gcloud compute instances add-metadata instance-name \ --metadata serial-port-enable=TRUE
REST
Nell'API, invia una richiesta
instances().setMetadata
con la chiaveserial-port-enable
e il valoreTRUE
: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, anche nota come baud rate, per la console seriale a 115.200 bps (~11.5kB/sec). Utilizzo di una velocità inferiore ai risultati nell'output della console con caratteri incomprensibili o mancante.
La configurazione del bootloader varia in base ai sistemi operativi e alle versioni del sistema operativo. Invita consulta la documentazione del distributore del sistema operativo per istruzioni.
Se modifichi la velocità in bit dalla riga di comando per la sessione corrente, utilizza simile al seguente:
console=ttyS0,115200
Se modifichi la configurazione GRUB, usa un comando simile al seguente:
serial --speed=115200
Assicurati di aggiornare la configurazione effettiva del bootloader. Questa operazione può essere eseguita con
update-grub
,grub2-mkconfig
o un comando simile.Connessione a una console seriale
Compute Engine offre gateway della console seriale a livello di regione per ogni piattaforma Google Cloud regione. Dopo aver abilitato l'accesso interattivo per la console seriale di una VM, può connettersi a una console seriale regionale.
La console seriale autentica gli utenti con Chiavi SSH. In particolare, devi aggiungere chiave SSH pubblica ai metadati del progetto o dell'istanza e archivia la tua chiave privata sul computer locale da cui vuoi connetterti. gcloud CLI e la console Google Cloud aggiungerà automaticamente al progetto le chiavi SSH. Se utilizzi un client di terze parti, potrebbe essere necessario aggiungere manualmente le chiavi SSH.
Console
Per connetterti alla console seriale regionale di una VM, segui questi passaggi:
gcloud
Per connetterti alla console seriale regionale di una VM, utilizza 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 SSH di terze parti purché il client consenta la connessione alla porta TCP 9600.
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 esegui il comando
gcloud compute connect-to-serial-port
con--dry-run
per vedere il comando SSH che sarebbe stato eseguito sul tuo per conto tuo. Quindi puoi confrontare le opzioni con il comando che stai utilizzando.Configurare una connessione sicura
Quando utilizzi un client SSH di terze parti diverso da Google Cloud CLI, puoi assicurarti di essere protetto contro il furto d'identità tramite il controllo della chiave SSH del server della porta seriale di Google. Per configurare il sistema in modo che controlli la chiave SSH del server, completa i seguenti passaggi:
Per motivi di sicurezza, di tanto in tanto Google potrebbe modificare il numero Chiave SSH del server di porta. Se il client non riesce ad autenticare la chiave server, terminare immediatamente il tentativo di connessione e completare i passaggi precedenti scarica una nuova chiave SSH del server della porta seriale Google.
Se, dopo l'aggiornamento della chiave host, continui a ricevere di autenticazione dal client, interrompi i tentativi di connessione seriale e contattare l'Assistenza Google. Non fornire credenziali su connessione in cui autenticazione host non è riuscito.
Disconnessione dalla console seriale
Per disconnetterti dalla console seriale:
Puoi scoprire altri comandi digitando
~?
o esaminando la pagina di manuali per SSH:man ssh
Non provare a disconnetterti utilizzando uno dei seguenti metodi:
Connessione a una console seriale con una richiesta di accesso
Se stai cercando di risolvere un problema con una VM che è stata avviata completamente o stai cercando di risolvere un problema che si verifica dopo che la VM ha superato la modalità utente singolo, è possibile che ti vengano chieste le credenziali di accesso quando cerchi 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 in modo da consentire gli accessi basati su password per gli utenti locali.
Se la VM esegue un'immagine preconfigurata con accessi alla porta seriale, devi configurare una password locale sulla VM per poter accedere alla console seriale, se richiesto. Puoi configurare una password locale dopo aver eseguito la connessione a sulla VM o usando 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 collegarti alla console seriale durante o dopo la creazione della VM.
Le seguenti istruzioni descrivono come configurare una password locale dopo una VM per la creazione di contenuti.
Configurazione di una password locale utilizzando
passwd
sulla VMLe seguenti istruzioni descrivono come impostare una password locale per un su una VM, in modo che possa accedere alla console seriale della VM usando la password specificata.
Configurare un accesso su altre porte seriali
Le richieste di accesso sono abilitate per impostazione predefinita sulla porta 1 sulla maggior parte dei sistemi operativi Linux. Tuttavia, la porta 1 può spesso essere sovraccaricata dal logging dei dati e di altre informazioni che viene stampato sulla porta. Puoi invece scegliere di abilitare le credenziali di accesso su un'altra porta, come la porta 2 (ttyS1), eseguendo uno dei i seguenti comandi sulla tua VM. Puoi vedere un elenco delle per una VM Informazioni sulla numerazione delle porte seriali.
Nella tabella seguente sono elencate le immagini preconfigurate con accesso alla console seriale e le porte predefinite.
Sistema operativo Porte con richiesta di accesso per impostazione predefinita Gestione servizio 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
Salto OpenSUSE 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 N/D Per attivare le richieste di accesso su porte seriali aggiuntive, completa i seguenti passaggi istruzioni.
systemd
Per i sistemi operativi Linux che utilizzano
systemd
:upstart
Per sistemi operativi Linux che utilizzano
upstart
:sysvinit
Per sistemi operativi Linux che utilizzano
sysvinit
, esegui questo comando:sudo sed -i~ -e 's/^#T([01])/T\1/' /etc/inittab sudo telinit q
Informazioni sulla numerazione delle porte seriali
Ogni istanza di macchina virtuale ha quattro porte seriali. Per coerenza con
getSerialPortOutput
API, 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 vanno da/dev/ttyS0
a/dev/ttyS3
. Windows si riferisce porte seriali come daCOM1
aCOM4
. Per stabilire la connessione 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 di istanze VM Porte seriali standard Linux Porte COM 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 il logging dei messaggi da del kernel e dei programmi di sistema.Invio di una interruzione seriale
La Tasto SysRq magico consente di eseguire attività di basso livello indipendentemente stato. Ad esempio, puoi sincronizzare i file system, riavviare l'istanza i processi finali smontare i file system usando la funzionalità chiave SysRq magico.
Per inviare un comando SysRq magico utilizzando un'interruzione seriale simulata:
Visualizzazione degli audit log della console seriale
Compute Engine fornisce audit log per tenere traccia degli utenti connessi disconnesso dalla console seriale di un'istanza. Per visualizzare i log, devi avere autorizzazioni per il visualizzatore log o visualizzare o modificare il progetto.
Per qualsiasi log di controllo, puoi:
Esistono diverse proprietà dei log di controllo per i diversi tipi di log. Ad esempio: Gli audit log relativi alle connessioni hanno proprietà che sono specifiche dei log delle connessioni, mentre gli audit log per le disconnessioni il proprio insieme di proprietà. Esistono alcune proprietà degli audit log che sono condivisi tra entrambi i tipi di log.
Tutti i log della console seriale
La tabella seguente fornisce le proprietà dei 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 della porta seriale per indicare a quale console seriale si riferisce. Ad esempio, projects/myproject/zones/us-east1-a/instances/example-instance/SerialPort/2
è la porta 2, nota 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 quando è iniziata o terminata la sessione. severity
NOTICE
operation.id
Una stringa ID che identifica in modo univoco la sessione; puoi utilizzarlo 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à degli audit log e i relativi valori specifici per log delle connessioni:
Proprietà Valore methodName
google.ssh-serialport.v1.connect
status.message
Connection succeeded.
request.serialConsoleOptions
Qualsiasi opzione specificati con la richiesta, compreso il numero di porta seriale. request.@type
type.googleapis.com/google.compute.SerialConsoleSessionBegin
request.username
Il nome utente specificato per questa richiesta. Viene utilizzato per selezionare la chiave pubblica da associare. operation.first
TRUE
status.code
Per le richieste di connessione andate a buon fine, 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 verifichi il valorestatus.code
digoogle.rpc.Code.OK
funzionerà come previsto.Log di disconnessione
La tabella seguente fornisce le proprietà degli audit log e i relativi valori specifici per log di disconnessione:
Proprietà Valore methodName
google.ssh-serialport.v1.disconnect
response.duration
La durata, in secondi, della sessione. response.@type
type.googleapis.com/google.compute.SerialConsoleSessionEnd
operation.last
TRUE
Log di connessione non riuscite
Quando una connessione non riesce, Compute Engine crea una voce di audit log. R di connessioni non riuscite è molto simile a una voce relativa a una connessione riuscita, ha le seguenti proprietà per indicare una connessione non riuscita.
Proprietà Valore severity
ERROR
status.code
Il codice di errore dell'API Google canonico che descrive meglio l'errore. Di seguito sono riportati i possibili codici di errore che vengono visualizzate:
status.message
Il messaggio leggibile per questa voce. Disabilitazione dell'accesso alla console seriale interattiva
Puoi disabilitare l'accesso alla console seriale interattiva modificando i metadati nella un'istanza o un progetto specifico oppure impostando un Criterio dell'organizzazione che disabilita l'accesso alla console seriale interattiva a tutte le istanze VM per una o più ai progetti che fanno parte dell'organizzazione.
Disabilitazione della console seriale interattiva su un'istanza o un progetto specifico
I proprietari e gli editor del progetto, nonché gli utenti a cui è stato concesso il Ruolo
compute.instanceAdmin.v1
, può disabilitare l'accesso alla console seriale modificando i metadati su un'istanza o un progetto specifico. Simile a abilitare l'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, come in questo caso:
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
Disabilitazione dell'accesso alla console seriale interattiva tramite il criterio dell'organizzazione
Se ti è stato concesso il ruolo
orgpolicy.policyAdmin
per l'organizzazione, puoi impostare criteri dell'organizzazione che impedisce l'accesso interattivo alla console seriale, indipendentemente dal fatto che l'accesso alla console seriale interattiva sia abilitato sul server dei metadati. Dopo il dell'organizzazione, il criterio sostituisce in modo efficace chiave di metadatiserial-port-enable
, e nessun utente dell'organizzazione o del progetto può abilitare le funzionalità seriali l'accesso alla console. 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 in base al progetto.
gcloud
Per impostare il criterio utilizzando Google Cloud CLI, esegui il comando Comando
resource-manager enable-enforce
. Sostituisciorganization-id
con il tuo 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 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 quanto segue vincolo:"constraint": "constraints/compute.disableSerialPortAccess"
Ad esempio:
{ "policy": { "booleanPolicy": { "enforced": TRUE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Il criterio viene applicato immediatamente, quindi tutti i progetti nell'organizzazione immediatamente l'autorizzazione dell'accesso interattivo alla console seriale.
Per disattivare temporaneamente il criterio, 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 la Parametro
enforced
perFALSE
:{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Impostazione del criterio dell'organizzazione a livello di progetto
Puoi impostare lo stesso criterio dell'organizzazione in base al progetto. Questo sostituisce l'impostazione a livello di organizzazione.
gcloud
Per disattivare l'applicazione di questo criterio per un progetto specifico. Sostituisci
project-id
con l'ID del tuo progetto.gcloud resource-manager org-policies disable-enforce \ --project project-id compute.disableSerialPortAccess
Puoi attivare l'applicazione di questo criterio utilizzando
enable-enforce
con gli stessi valori.REST
Nell'API, effettua una richiesta
POST
al seguente URL per abilitare la funzionalità l'accesso alla console seriale per il progetto,project-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 quanto segue 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.
Controllo del numero massimo di connessioni
Puoi impostare la proprietà
max-connections
per controllare quanti dati simultanei è possibile stabilire contemporaneamente connessioni a questa porta seriale. I valori predefiniti e il numero 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
Impostazione delle opzioni di riproduzione
Per impostazione predefinita, ogni volta che ti connetti alla console seriale, ricevi una riproduzione delle ultime 10 righe di dati, indipendentemente dal fatto che le ultime 10 righe sono stati rilevati 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 tuo Comando
connect-to-serial-port
, doveN
è il numero specificato di righe (o byte o indice assoluto di byte, a seconda dell'opzione di ripetizione che selezione):--extra-args replay-lines=N
Se utilizzi un client SSH di terze parti, fornisci questa opzione nel :
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 ignorato
Il valore di 1 MiB più recente 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 ma non si disconnette e viene generato più di 1 MiB di nuovi dati. al tuo client SSH potrebbe mancare qualche output. Quando la connessione SSH Il client non accetta i dati abbastanza velocemente da stare al passo con l'output sul 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 exit o logout
Puoi attivare la disconnessione con i comandi di uscita o di logout impostando la proprietà
on-dtr-low
sudisconnect
quando ti connetti alla console seriale.Su Google Cloud CLI, aggiungi il seguente flag Comando
connect-to-serial-port
:--extra-args on-dtr-low=disconnect
Se utilizzi un client SSH di terze parti, fornisci questa opzione nel :
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 Impostazione predefinitanone
, puoi riavviare l'istanza senza disconnetterti dalla console seriale, ma non si disconnette tramite le normali come i comandiexit
ologout
oppure 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 2024-10-14 UTC.
-