Nesta página, você verá como ativar o acesso interativo ao console serial de uma instância para depurar problemas de inicialização e rede, resolver problemas em instâncias com mau funcionamento, interagir com o GRand Unified Bootloader (GRUB) e realizar outras tarefas de solução de problemas.
Uma instância de máquina virtual (VM) tem quatro portas seriais virtuais. A interação com uma porta serial é similar ao uso de uma janela de terminal, no sentido de que a entrada e a saída ocorrem inteiramente no modo de texto e não há suporte para interface gráfica ou mouse. O sistema operacional da instância, o BIOS, e outras entidades em nível de sistema, frequentemente gravam a saída nas portas seriais e podem aceitar como entradas comandos ou respostas a prompts. Normalmente, essas entidades no nível do sistema usam a primeira porta serial (porta 1), que costuma ser chamada de console serial.
Se você precisa apenas ver a saída da porta serial sem emitir comandos ao console, chame o método getSerialPortOutput
ou use o Cloud Logging para ler informações gravadas por sua instância na porta serial. Consulte as informações sobre como visualizar registros de portas seriais.
Contudo, se você tiver problemas para acessar a instância por meio do SSH ou precisar solucionar problemas em uma instância que não está totalmente inicializada, será possível ativar o acesso interativo ao console serial, o que permite a conexão e a interação com qualquer uma das portas seriais da instância. Por exemplo, é possível executar comandos e responder a prompts diretamente na porta serial.
Ao ativar ou desativar a porta serial, é possível usar qualquer valor booleano que seja aceito pelo servidor de metadados. Para mais informações, consulte Como configurar valores booleanos.
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
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.
- No Console do Google Cloud, acesse a página Metadados.
- Clique em Editar para editar entradas de metadados.
- Adicione uma nova entrada que use a chave serial-port-enable e o valor TRUE.
- Salve as alterações.
- No console do Google Cloud, acesse a página Instâncias de VMs.
- Clique na instância para que você quer ativar acesso.
- Clique em Editar.
- Na seção Acesso remoto, marque a caixa de seleção Ativar conexão com portas seriais.
- Salve as alterações.
- No console do Google Cloud, acesse a página Instâncias de VMs.
- Clique na instância à qual você quer se conectar.
- Em Acesso remoto, clique em Conectar ao console serial para se conectar à porta padrão (porta 1).
- Se você quiser se conectar a outra porta serial, clique na seta para baixo ao lado do botão Conectar ao console serial e altere o número da porta de acordo.
- Para instâncias do Windows, abra o menu suspenso ao lado do botão e conecte-se à Porta 2 para acessar o console serial.
Recomendado: para se conectar ao console serial regional de uma VM, use o comando
gcloud compute connect-to-serial-port
e inclua a sinalização--location
:gcloud compute connect-to-serial-port VM_NAME \ --location=REGION \ --port=PORT_NUMBER
Para se conectar ao console serial global de uma VM, use o comando
gcloud compute connect-to-serial-port
e omita a sinalização--location
:gcloud compute connect-to-serial-port VM_NAME \ --port=PORT_NUMBER
VM_NAME
: o nome da VM com o console serial ao qual você quer se conectar.REGION
: a região da VM com o console serial ao qual você quer se conectar.PORT_NUMBER
: o número da porta que você quer conectar. Para VMs do Linux, use1
. Para VMs do Windows, use2
. Para saber mais sobre números de portas, consulte Noções básicas sobre a numeração de portas seriais.project-id
: o ID do projeto para esta instância.zone
: a zona da instância.instance-name
: o nome da instância.username
: o nome de usuário que você está usando para se conectar à instância. Normalmente, é o nome de usuário na sua máquina local.options
: opções extras que você especifica para essa conexão. Por exemplo, é possível especificar uma determinada porta serial e especificar qualquer opção avançada. O número da porta pode variar de 1 a 4. Para saber mais sobre números de portas, consulte Noções básicas sobre a numeração de portas seriais. Se o número for omitido, a conexão será estabelecida com a porta serial 1.- Faça o download da chave SSH do servidor de portas seriais do Google.
- Abra seu arquivo de hosts conhecido, normalmente localizado em
~/.ssh/known_hosts
. Adicione o conteúdo da chave SSH do servidor com o prefixo
ssh-serialport.googleapis.com
incluído na chave. Por exemplo, se a chave do servidor contiver a linhassh-rsa AAAAB3NzaC1yc...
, então~/.ssh/known_hosts
precisa ter uma linha como esta:ssh-serialport.googleapis.com ssh-rsa AAAAB3NzaC1yc...
- Pressione a tecla
ENTER
. - Digite
~.
(til seguido de um ponto). A combinação de teclas
CTRL+ALT+DELETE
ou outras combinações semelhantes. Isso não funciona porque o console serial não reconhece combinações de teclado do PC.Os comandos
exit
oulogout
não funcionam porque o convidado não está ciente de nenhuma conexão de rede ou de modem. Usar esse comando causa o fechamento e a reabertura do console, e a conexão com a sessão permanece ativa. Para ativar os comandosexit
elogout
na sessão, configure a opçãoon-dtr-low
.No console do Google Cloud, acesse a página Instâncias de VMs.
Selecione a VM em que você quer adicionar a senha local.
Clique em Editar.
Linux
Navegue até a seção Metadados > Automação.
Se a VM tiver um script de inicialização, copie e cole-o em algum lugar seguro.
Adicione o seguinte script de inicialização:
#!/bin/bash useradd USERNAME echo USERNAME:PASSWORD | chpasswd usermod -aG google-sudoers USERNAME
Substitua:
- USERNAME: o nome de usuário que você quer adicionar
- PASSWORD: a senha do nome de usuário Evite o uso de senhas simples, já que alguns sistemas operacionais podem exigir o mínimo de comprimento e complexidade.
Windows
- Navegue até a seção Metadados personalizados.
- Se a VM tiver um script de inicialização atual, copie-o e cole-o em algum lugar seguro.
- Clique em Adicionar item.
- No campo Chave, digite
windows-startup-script-cmd
. No campo Valor, insira este script:
net user USERNAME PASSWORD /ADD /Y net localgroup administrators USERNAME /ADD
Substitua:
- USERNAME: o nome de usuário que você quer adicionar
- PASSWORD: a senha do nome de usuário
Clique em Save.
Para reinicializar a VM, clique em Redefinir. Para mais informações, consulte Redefinir uma VM.
Insira suas informações de login quando solicitado.
Remova o script de inicialização da VM após a criação do usuário.
Conecte-se à VM. Substitua
instance-name
pelo nome da instância.gcloud compute ssh instance-name
Na instância, crie uma senha local com o comando a seguir. Isso define uma senha para o usuário utilizado para a conexão atual.
sudo passwd $(whoami)
Siga os prompts para criar uma senha.
Em seguida, saia da instância e estabeleça conexão com o console serial.
Insira suas informações de login quando solicitado.
Ative o serviço temporariamente até a próxima reinicialização:
sudo systemctl start serial-getty@ttyS1.service
Ative o serviço permanentemente, a partir da próxima reinicialização:
sudo systemctl enable serial-getty@ttyS1.service
Crie um novo arquivo
/etc/init/ttyS1.conf
para refletirttyS1
copiando e modificando um arquivottyS0.conf
. Por exemplo:No Ubuntu 14.04:
sudo sh -c "sed -e s/ttyS0/ttyS1/g < /etc/init/ttyS0.conf > /etc/init/ttyS1.conf"
No RHEL 6.8 e no 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"
Inicie uma solicitação de login em
ttyS1
sem reiniciar:sudo start ttyS1
- Pressione a tecla
ENTER
. - Digite
~B
(til seguido deB
maiúsculo). - Digite o comando Magic SysRq.
- No Console do Google Cloud, acesse a página do Explorador de registros.
- Expanda o menu suspenso e selecione GCE VM Instance.
- Na barra de pesquisa, digite
ssh-serialport.googleapis.com
e pressione Enter. Uma lista de registros de auditoria é exibida. Os registros descrevem conexões e desconexões de um console serial. Expanda qualquer uma das entradas para mais informações:
- Expandir a propriedade
protoPayload
. - Procurar por
methodName
para ver a atividade à qual esse registro se aplica. Pode ser uma solicitação de conexão ou desconexão. Por exemplo, se o registro rastrear uma desconexão do console serial, o nome do método será"google.ssh-serialport.v1.disconnect"
. Da mesma forma, um registro de conexão seria"google.ssh-serialport.v1.connect"
. Uma entrada no registro de auditoria é registrada no início e no fim de cada sessão no console serial. google.rpc.Code.INVALID_ARGUMENT
: a conexão falhou porque o cliente forneceu um número de porta inválido ou tentou alcançar um canal desconhecido. Consulte a lista de números de porta válidos.google.rpc.Code.PERMISSION_DENIED
: você não ativou o console serial interativo no servidor de metadados. Para mais informações, consulte Como ativar o acesso interativo no console serial.google.rpcCode.UNAUTHENTICATED
: nenhuma chave SSH foi encontrada ou não há chave SSH correspondente para essa instância. Verifique se você está autenticado na instância de VM.google.rpc.Code.UNKNOWN
: ocorreu um erro desconhecido na sua solicitação. Informe ao Google no grupo gce-discussion ou envie um relatório do bug.Se estiver com dificuldade para se conectar usando um cliente SSH padrão, mas o comando
gcloud compute connect-to-serial-port
fizer isso com sucesso, pode ser útil executargcloud compute connect-to-serial-port
com a opção de linha de comando--dry-run
para ver o comando SSH que teria sido executado em seu nome e comparar as opções dele às do comando que você está usando.Configuração da taxa de bits, também conhecida como "baud rate": é possível definir a taxa de bits que quiser, como
stty 9600
, mas o recurso normalmente força a taxa efetiva para 115.200 bps (aproximadamente 11,5 kB/s). Isso ocorre porque muitas imagens públicas usam taxas de bits baixas por padrão no console serial, como 9.600, o que causa uma inicialização lenta.Algumas imagens de SO têm padrões inadequados na porta serial. Por exemplo, no CentOS 7, o padrão
stty icrnl
para a tecla Enter no console é enviar umCR
, também conhecido como^M
. O shell de Bash pode mascarar isso até você tentar definir uma senha. Nesse momento, você se perguntará por que ele aparenta estar parado no promptpassword:
.Algumas imagens públicas têm chaves de controle de job que serão desativadas por padrão se você anexar um shell a uma porta usando determinadas maneiras. Alguns exemplos dessas chaves incluem
^Z
e^C
. O comandosetsid
pode corrigir isso. Caso contrário, se você receber uma mensagemjob control is disabled in this shell
, tome cuidado para não executar comandos que precisará interromper.Pode ser útil informar ao sistema o tamanho da janela que você está usando, assim o Bash e os editores podem gerenciá-la corretamente. Caso contrário, é possível notar um comportamento de exibição estranho porque o Bash ou os editores tentam manipular a exibição com base em suposições incorretas sobre o número de linhas e colunas disponíveis. Use o comando
stty rows Y cols X
e a sinalizaçãostty -a
para ver qual é a configuração. Por exemplo:stty rows 60 cols 120
, se sua janela tiver 120 caracteres por 60 linhas.Se, por exemplo, você se conectar usando SSH da máquina A à máquina B e depois à máquina C etc., criando uma sessão SSH aninhada e quiser usar comandos til (~) para desconectar ou enviar um sinal de interrupção serial, precisará adicionar caracteres til extras ao comando para chegar ao cliente SSH correto. Um comando após um único til é interpretado pelo cliente SSH na máquina A, um comando após dois tis consecutivos (Enter~~) é interpretado pelo cliente na máquina B e assim por diante. Você só precisa pressionar Enter uma vez, porque ele é totalmente transmitido para o destino SSH mais interno. Isso é válido para qualquer uso de clientes SSH que forneçam o recurso til de escape.
Se você perder a conta do número de caracteres til necessários, pressione a tecla Enter e digite os caracteres til, um de cada vez, até que a instância retorne o til novamente. Esse eco indica que você chegou ao fim da cadeia e agora sabe que para enviar um comando til ao cliente SSH mais aninhado, você precisa de um til a menos do que o número de tis digitado.
replay-lines=N
: definaN
como o número de linhas que você quer reproduzir novamente. Por exemplo, seN
for 50, as últimas 50 linhas da saída do console serão incluídas.replay-bytes=N
: reproduz os bytesN
mais recentes. Também é possível definirN
comonew
, o que reproduz novamente toda a saída que não foi enviada ainda a nenhum cliente.replay-from=N
: reproduz a saída a partir de um índice de byte absoluto fornecido. Para receber o índice de byte atual da saída do console serial, faça uma solicitaçãogetSerialPortOutput
. Se você definirreplay-from
, todas as outras opções de reprodução serão ignoradas.replay-lines=N
ereplay-bytes=new
- Reproduzem o número especificado de linhas ou reproduzem novamente toda a saída não enviada anteriormente a nenhum cliente, o que for maior. O primeiro cliente a estabelecer conexão com essa combinação de sinalizações verá que toda a saída foi enviada para a porta serial, e os clientes que estabelecerem conexão posteriormente verão somente as últimas
N
linhas. Exemplos: replay-lines=N
ereplay-bytes=M
- Reproduzem novamente o número de linhas ou bytes descritos por essas sinalizações, o que for menor. Essa opção não reproduzirá mais do que bytes
N
ouM
bytes. insert-stderr-note
: insira uma observação nostderr
do cliente SSH, indicando que a saída foi eliminada. Essa é a opção padrão.ignore
: elimina a saída silenciosamente e não executa nenhuma ação.disconnect
: interrompe a conexão.- Saiba mais sobre a API
getSerialPortOutput
. - Saiba como reter e visualizar a saída da porta serial mesmo após uma instância de VM ter sido excluída.
- Leia mais sobre dicas para solução de problemas.
- Saiba mais sobre a aplicação de metadados.
- Saiba mais sobre chaves SSH.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Ativação do acesso interativo no console serial
Ative o acesso ao console serial interativo para instâncias de VM individuais ou para um projeto inteiro.
Como ativar acesso de um projeto
A ativação do acesso ao console serial interativo em um projeto permite acesso a todas as instâncias de VM que fazem parte desse projeto.
Por padrão, o acesso à porta serial interativa está desativado. Também é possível desativá-lo explicitamente definindo a tecla
serial-port-enable
comoFALSE
. Em ambos os casos, qualquer configuração por instância modifica a configuração para envolvidos no projeto ou a configuração padrão.Console
gcloud
Usando a Google Cloud CLI, digite o comando
project-info add-metadata
da seguinte maneira:gcloud compute project-info add-metadata \ --metadata serial-port-enable=TRUE
REST
Na API, faça uma solicitação para o método
projects().setCommonInstanceMetadata
, fornecendo à chaveserial-port-enable
um valor deTRUE
:{ "fingerprint": "FikclA7UBC0=", "items": [ { "key": "serial-port-enable", "value": "TRUE" } ] }
Como ativar o acesso para uma instância de VM
Ative o acesso ao console serial interativo para uma instância específica. Uma configuração por instância modificará qualquer configuração para envolvidos no projeto. Também é possível desativar o acesso para uma instância específica, mesmo se ele estiver ativado para envolvidos no projeto. Para isso, defina
serial-port-enable
comoFALSE
em vez deTRUE
. Da mesma maneira, é possível ativar o acesso para uma ou mais instâncias, mesmo se ele estiver desativado para o projeto, explicitamente ou por padrão.Console
gcloud
Usando a Google Cloud CLI, digite o comando
instances add-metadata
, substituindoinstance-name
pelo nome da instância.gcloud compute instances add-metadata instance-name \ --metadata serial-port-enable=TRUE
REST
Na API, faça uma solicitação para o método
instances().setMetadata
com a chaveserial-port-enable
e um valor deTRUE
: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" } ] }
Conexão com um console serial
Depois de ativar o acesso interativo ao console serial de uma instância, conecte-se a ele.
O Compute Engine oferece um gateway de console serial global e gateways de console serial regionais (Prévia) para cada região do Google Cloud. É possível se conectar ao console serial de uma VM usando o gateway global ou regional. No entanto, recomendamos o gateway regional (Prévia) para maior confiabilidade.
Ao se conectar ao console serial usando o console do Google Cloud, você se conecta automaticamente ao console serial regional (Prévia). Ao usar a Google Cloud CLI, você pode escolher entre o gateway regional ou global. As conexões por outros clientes SSH aceitam apenas o gateway global.
O console serial autentica usuários com chaves SSH. Especificamente, é necessário adicionar sua chave SSH pública aos metadados do projeto ou da instância e armazenar sua chave privada na máquina local da qual quer se conectar. A CLI gcloud e o Console do Google Cloud adicionam automaticamente chaves SSH ao projeto para você. Se estiver usando um cliente de terceiros, talvez seja necessário adicionar as chaves SSH manualmente.
Console
Para se conectar ao console serial regional de uma VM, faça o seguinte:
gcloud
Para se conectar ao console serial regional ou global de uma VM, use um dos seguintes comandos:
Substitua:
Outros clientes SSH
É possível se conectar ao console serial de uma instância usando outros clientes SSH de terceiros, contanto que o cliente permita que você se conecte à porta TCP 9600.
Por exemplo, o comando SSH a seguir estabelece conexão com a porta serial padrão (1) de uma instância chamada
example-instance
com o nome de usuáriojane
com o ID do projetomyproject
. A instância está na zonaus-central1-f
: Substituaprivate-ssh-key-file
pelo arquivo de chave SSH privada da instância.ssh -i private-ssh-key-file -p 9600 myproject.us-central1-f.example-instance.jane@ssh-serialport.googleapis.com
Veja em mais detalhes como é possível a conexão com o console serial de uma instância usando as seguintes informações de login e endereço:
project-id.zone.instance-name.username.options@ssh-serialport.googleapis.com
Substitua o seguinte:
Se você estiver estabelecendo conexão com uma instância de VM do Windows, faça isso por meio da porta 2, usando o seguinte comando:
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.port=2@ssh-serialport.googleapis.com
Se você estiver com problemas para se conectar usando um cliente SSH de terceiros, execute o comando
gcloud compute connect-to-serial-port
com a opção de linha de comando--dry-run
para ver o comando SSH que seria executado em seu nome. Em seguida, compare as opções com o comando que está usando.Como configurar uma conexão segura
Ao usar um cliente SSH de terceiros que não seja a Google Cloud CLI, é possível garantir a proteção contra falsificação de identidade ou ataques intermediários usando a verificação da chave SSH do servidor de portas seriais do Google. Para configurar seu sistema para verificar a chave SSH do servidor, conclua as seguintes etapas:
De vez em quando, por motivos de segurança, o Google pode alterar a chave SSH do servidor de porta serial do Google. Se seu cliente não autenticar a chave do servidor, encerre imediatamente a tentativa de conexão e conclua as etapas anteriores para fazer o download de uma nova chave SSH do servidor de porta serial do Google.
Depois de atualizar a chave de host, se você continuar a receber um erro de autenticação de host de seu cliente, encerre as tentativas de conexão com a porta serial e entre em contato com o suporte do Google. Não forneça nenhuma credencial por meio de uma conexão em que a autenticação do host tenha falhado.
Como se desconectar do console serial
Para se desconectar do console serial, siga as etapas abaixo:
É possível descobrir outros comandos digitando
~?
ou examinando a página principal do SSH:man ssh
Não use nenhum dos métodos a seguir para tentar se desconectar:
Conexão com um console serial por prompt de login
Se você estiver tentando resolver um problema com uma VM que inicializou completamente ou resolver um problema que ocorre após a inicialização no modo de usuário único, talvez receba uma solicitação para inserir informações de login ao tentar acessar o console serial.
Por padrão, as imagens de sistema fornecidas pelo Google não são configuradas para permitir logins baseados em senha para usuários locais. No entanto, as imagens do Windows fornecidas pelo Google são configuradas para permitir logins baseados em senha para usuários locais.
Se sua VM estiver executando uma imagem pré-configurada com logins de portas seriais, será necessário configurar uma senha local na VM para que você possa fazer login no console serial, se solicitado. É possível configurar uma senha local depois de se conectar à VM ou usando um script de inicialização.
Como configurar uma senha local usando um script de inicialização
É possível usar um script de inicialização para configurar uma senha local que permita se conectar ao console serial durante ou após a criação da VM.
As instruções a seguir descrevem como configurar uma senha local após a criação da VM.
Como configurar uma senha local usando
passwd
na VMAs instruções a seguir descrevem como configurar uma senha local para um usuário em uma VM para que o usuário possa fazer login no console serial dessa VM usando a senha especificada.
Como configurar um login em outras portas seriais
Por padrão, os prompts de login estão ativados na porta 1 na maioria dos sistemas operacionais Linux. Contudo, a porta 1 pode ficar sobrecarregada registrando dados e outras informações enviadas para ela. Em vez disso, opte por ativar um prompt de login em outra porta, como a porta 2 (ttyS1), executando um dos seguintes comandos na VM. É possível ver uma lista das portas disponíveis para uma VM em Noções básicas sobre a numeração de portas seriais.
A tabela a seguir relaciona as imagens pré-configuradas com um login do console serial e as portas padrão.
Sistema operacional Portas com um prompt de login por padrão Gerenciamento de serviços 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 N/A Para ativar solicitações de login em mais portas seriais, siga as instruções abaixo.
systemd
Para sistemas operacionais Linux que usam
systemd
, siga estas instruções:upstart
Para sistemas operacionais Linux que usam
upstart
, siga estas instruções:sysvinit
Para sistemas operacionais Linux que usam
sysvinit
, execute o seguinte comando:sudo sed -i~ -e 's/^#T([01])/T\1/' /etc/inittab sudo telinit q
Como entender a numeração de portas seriais
Cada instância de máquina virtual tem quatro portas seriais. Para manter a consistência com a API
getSerialPortOutput
, cada porta é numerada de 1 a 4. O Linux e outros sistemas parecidos numeram as portas seriais de 0 a 3. Por exemplo, em muitas imagens de sistema operacional, os dispositivos correspondentes vão de/dev/ttyS0
a/dev/ttyS3
. O Windows faz referência às portas seriais deCOM1
aCOM4
. Para estabelecer conexão com o que o Windows considera comoCOM3
e o Linux considera comottyS2
, você especificaria a porta 3. Use a tabela a seguir para ajudar a descobrir em qual porta você quer estabelecer a conexão.Portas seriais da instância de máquina virtual Portas seriais padrão do Linux Portas COM do Windows 1
/dev/ttyS0
COM1
2
/dev/ttyS1
COM2
3
/dev/ttyS2
COM3
4
/dev/ttyS3
COM4
Note que muitas imagens do Linux usam a porta 1 (
/dev/ttyS0
) para gerar registros de mensagens provenientes do kernel e dos programas do sistema.Envio de uma interrupção serial
O recurso chave Magic SysRq (em inglês) permite realizar tarefas de baixo nível, independentemente do estado do sistema. Por exemplo, é possível sincronizar sistemas de arquivos, reinicializar a instância, encerrar processos e desativar sistemas de arquivos usando o recurso de chave Magic SysRq.
Para enviar um comando Magic SysRq usando uma interrupção serial simulada, siga as etapas abaixo:
Como visualizar registros de auditoria do console serial
O Compute Engine fornece registros de auditoria para rastrear quem estabeleceu e encerrou uma conexão com o console serial de uma instância. Para ver os registros, é preciso ter permissões para o Logs Viewer ou ser um visualizador ou editor do projeto.
Em qualquer um dos registros de auditoria, é possível realizar estas ações:
Há diferentes propriedades de registros de auditoria para tipos de registro distintos. Por exemplo, os registros de auditoria relacionados às conexões têm propriedades específicas dos registros de conexão, enquanto os registros de auditoria para desconexões têm seu próprio conjunto de propriedades. Há algumas propriedades que também são compartilhadas entre ambos os tipos de registro.
Todos os registros do console serial
A tabela a seguir fornece propriedades do registro de auditoria e os respectivos valores para todos os registros do console serial:
Propriedade Valor requestMetadata.callerIp
O endereço IP e o número da porta de origem da conexão. serviceName
ssh-serialport.googleapis.com
resourceName
Uma string que contém o ID do projeto, a zona, o nome da instância e o número da porta serial para indicar a que console serial pertence. Por exemplo, projects/myproject/zones/us-east1-a/instances/example-instance/SerialPort/2
é a porta número 2, também conhecida como COM2 ou /dev/ttyS1, para a instânciaexample-instance
.resource.labels
Propriedades que identificam o ID da instância, a zona e o ID do projeto. timestamp
Carimbo de data e hora que indica quando a sessão começou ou terminou. severity
NOTICE
operation.id
Uma string de ID que identifica exclusivamente a sessão. Use-a para associar uma entrada de desconexão à entrada de conexão correspondente. operation.producer
ssh-serialport.googleapis.com
Registros de conexão
A tabela a seguir fornece propriedades de registro de auditoria e os respectivos valores específicos para registros de conexão:
Propriedade Valor methodName
google.ssh-serialport.v1.connect
status.message
Connection succeeded.
request.serialConsoleOptions
Quaisquer opções especificadas com a solicitação, incluindo o número da porta serial. request.@type
type.googleapis.com/google.compute.SerialConsoleSessionBegin
request.username
O nome de usuário especificado para essa solicitação. Ele é usado para selecionar a chave pública correspondente. operation.first
TRUE
status.code
Para solicitações de conexão bem-sucedidas, o valor status.code
degoogle.rpc.Code.OK
indica a conclusão da operação sem nenhum erro. Como o valor da enum desta propriedade é0
, a propriedadestatus.code
não é exibida. No entanto, qualquer código que confirmar um valorstatus.code
degoogle.rpc.Code.OK
funcionará conforme o esperado.Registros de desconexão
A tabela a seguir fornece propriedades do registro de auditoria e os respectivos valores específicos para registros de desconexão:
Propriedade Valor methodName
google.ssh-serialport.v1.disconnect
response.duration
O tempo, em segundos, que a sessão durou. response.@type
type.googleapis.com/google.compute.SerialConsoleSessionEnd
operation.last
TRUE
Registros de falhas na conexão
Quando ocorre falha na conexão, o Compute Engine cria uma entrada no registro de auditoria. O registro de uma falha na conexão é bem parecido com a entrada de uma conexão bem-sucedida, mas tem as propriedades a seguir para indicar a falha na conexão.
Propriedade Valor severity
ERROR
status.code
O código de erro canônico da Google API que melhor descreve o erro. Os itens a seguir são possíveis códigos de erro que podem ser exibidos:
status.message
A mensagem legível referente a essa entrada. Como desativar o acesso ao console serial interativo
Você pode desativar o acesso ao console serial interativo alterando metadados na instância ou no projeto específico ou definindo uma política da organização que desativa o acesso ao console serial interativo para todas as instâncias de VM de um ou mais projetos que fazem parte da organização.
Como desativar o console serial interativo em uma instância ou projeto específico
Proprietários e editores do projeto, bem como usuários que receberam o papel
compute.instanceAdmin.v1
, podem desativar o acesso ao console serial alterando os metadados na instância ou projeto específico. De maneira semelhante à ativação do acesso ao console serial, defina os metadadosserial-port-enable
comoFALSE
:serial-port-enable=FALSE
Por exemplo, usando a Google Cloud CLI, é possível aplicar esses metadados a uma instância específica, como:
gcloud compute instances add-metadata instance-name \ --metadata=serial-port-enable=FALSE
Para aplicar os metadados ao projeto:
gcloud compute project-info add-metadata \ --metadata=serial-port-enable=FALSE
Como desativar o acesso ao console serial interativo por meio da política da organização
Se você tiver recebido o papel
orgpolicy.policyAdmin
na organização, defina uma política da organização que impeça o acesso interativo ao console serial, independentemente do acesso ao console serial interativo estar ativado no servidor de metadados. Depois que a política da organização for definida, ela modificará efetivamente a chave de metadadosserial-port-enable
, e nenhum usuário da organização ou projeto poderá ativar o acesso ao console serial interativo. Por padrão, essa restrição é definida comoFALSE
.A restrição para desativar o acesso ao console serial interativo é a seguinte:
compute.disableSerialPortAccess
Conclua as instruções a seguir para definir essa política na organização. Depois de configurar uma política, é possível conceder isenções por projeto.
gcloud
Para definir a política usando a Google Cloud CLI, execute o comando
resource-manager enable-enforce
. Substituaorganization-id
pelo ID da organização. Por exemplo,1759840282
.gcloud resource-manager org-policies enable-enforce \ --organization organization-id compute.disableSerialPortAccess
REST
Para definir uma política na API, faça uma solicitação
POST
ao seguinte URL: Substituaorganization-name
pelo nome da organização. Por exemplo,organizations/1759840282
.POST https://cloudresourcemanager.googleapis.com/v1/organization-name:setOrgPolicy
O corpo da solicitação precisa conter um objeto
policy
com a seguinte restrição:"constraint": "constraints/compute.disableSerialPortAccess"
Por exemplo:
{ "policy": { "booleanPolicy": { "enforced": TRUE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
A política entra em vigor imediatamente. Por isso, os projetos sob a organização deixam de permitir o acesso interativo ao console serial.
Para desativar temporariamente a política, use o comando
disable-enforce
:gcloud resource-manager org-policies disable-enforce \ --organization organization-id compute.disableSerialPortAccess
Como alternativa, faça uma solicitação de API em que o corpo da solicitação define o parâmetro
enforced
comoFALSE
:{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Como definir a política da organização para envolvidos no projeto
Você pode definir a mesma política organizacional por projeto. Isso substitui a definição no nível da organização.
gcloud
Para desativar a aplicação dessa política para um projeto específico, use o comando a seguir. Substitua
project-id
pelo ID do projeto.gcloud resource-manager org-policies disable-enforce \ --project project-id compute.disableSerialPortAccess
É possível ativar a aplicação dessa política usando o comando
enable-enforce
com os mesmos valores.REST
Na API, faça uma solicitação
POST
para seguinte URL a fim de ativar o acesso ao console serial interativo para projeto, substituindoproject-id
pelo ID do projeto:POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setOrgPolicy
O corpo da solicitação precisa conter um objeto
policy
com a seguinte restrição:"constraint": "constraints/compute.disableSerialPortAccess"
Por exemplo:
{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Dicas e sugestões
Opções avançadas
Como controlar o máximo de conexões
É possível definir a propriedade
max-connections
para controlar quantas conexões simultâneas podem ser estabelecidas nessa porta serial em um período. O número padrão e máximo de conexões é 5. Exemplo: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
Configuração de opções de nova reprodução
Por padrão, sempre que você se conectar ao console serial, receberá uma nova reprodução das últimas 10 linhas de dados, independentemente de terem sido vistas por outro cliente SSH. É possível alterar essa configuração e controlar quantas e quais linhas são retornadas configurando as seguintes opções:
Com a Google Cloud CLI, anexe a opção a seguir ao comando
connect-to-serial-port
, em queN
é o número especificado de linhas, ou bytes ou índice de byte absoluto, dependendo da opção de nova reprodução selecionada:--extra-args replay-lines=N
Se estiver usando um cliente SSH de terceiros, forneça esta opção em seu 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
Também é possível usar uma combinação dessas opções. Por exemplo:
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
Como processar a saída eliminada
O 1 MiB mais recente de saída para cada porta serial sempre está disponível e, geralmente, seu cliente SSH não deve perder nenhuma saída da porta serial. Se, por algum motivo, seu cliente SSH deixar de aceitar a saída por um período, mas não encerrar a conexão, e mais de 1 MiB de novos dados for produzido, ele poderá perder esses dados. Quando seu cliente SSH não estiver aceitando dados com rapidez o suficiente para acompanhar a saída na porta serial do console, defina a propriedade
on-dropped-output
para determinar o comportamento do console.Defina qualquer uma das seguintes opções aplicáveis com esta propriedade:
Por exemplo:
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
Como ativar a desconexão usando os comandos exit ou logout
É possível ativar a desconexão nos comandos exit ou logout configurando a propriedade
on-dtr-low
comodisconnect
ao estabelecer conexão com o console serial.Na Google Cloud CLI, anexe a seguinte sinalização ao seu comando
connect-to-serial-port
:--extra-args on-dtr-low=disconnect
Se estiver usando um cliente SSH de terceiros, forneça esta opção em seu 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
Ativar a opção
disconnect
pode fazer com que sua instância se desconecte uma ou mais vezes quando você reinicia a instância porque o sistema operacional redefine as portas seriais durante a inicialização.A configuração padrão da opção
on-dtr-low
énone
. Se você usar a configuração padrãonone
, poderá reinicializar a instância sem que ela seja desconectada do console serial, mas o console não se desconectará por meios normais, como os comandosexit
/logout
, ou combinações de teclas normais, como Ctrl + D.A seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-09-24 UTC.
-