Esta página descreve como habilitar o acesso interativo ao console serial de uma instância para depurar problemas de inicialização e rede, solucionar problemas de instâncias com defeito, interagir com o GRand Unified Bootloader (GRUB) e executar outras tarefas de solução de problemas.
Uma instância de máquina virtual (VM) possui quatro portas seriais virtuais. Interagir com uma porta serial é semelhante a usar uma janela de terminal, pois a entrada e a saída são inteiramente em modo texto e não há interface gráfica ou suporte para mouse. O sistema operacional da instância, o BIOS e outras entidades no nível do sistema geralmente gravam a saída nas portas seriais e podem aceitar entradas como comandos ou respostas a prompts. Normalmente, essas entidades de nível de sistema usam a primeira porta serial (porta 1) e a porta serial 1 costuma ser chamada de console serial.
Se você precisar apenas visualizar a saída da porta serial sem emitir nenhum comando para o console serial, poderá chamar o método getSerialPortOutput
ou usar o Cloud Logging para ler as informações que sua instância gravou na porta serial. consulte Visualizando logs de porta serial . No entanto, se você tiver problemas para acessar sua instância por meio de SSH ou precisar solucionar problemas de uma instância que não esteja totalmente inicializada, poderá ativar o acesso interativo ao console serial, que permite conectar-se e interagir com qualquer uma das portas seriais da sua instância. Por exemplo, você pode executar comandos diretamente e responder aos prompts na porta serial.
Ao ativar ou desativar a porta serial, você pode usar qualquer valor booleano aceito pelo servidor de metadados. Para obter mais informações, consulte Valores booleanos .
Antes de começar
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:
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.
- 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 suas alterações.
- No console do Google Cloud, acesse a página de instâncias de VM .
- Clique na instância para a qual deseja ativar o acesso.
- Clique em Editar .
- Na seção Acesso remoto , alterne a caixa de seleção Habilitar conexão com portas seriais .
- Salve suas alterações.
- No console do Google Cloud, acesse a página de instâncias de VM .
- Clique na instância à qual você deseja se conectar.
- Em Acesso remoto , clique em Conectar ao console serial para conectar-se à porta padrão (porta 1).
- Se desejar conectar-se 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 Windows, abra o menu suspenso próximo ao botão e conecte-se à Porta 2 para acessar o console serial.
-
VM_NAME
: o nome da VM cujo console serial você deseja se conectar. PORT_NUMBER
: o número da porta que você deseja conectar. Para VMs Linux, use1
, para VMs Windows, use2
. Para saber mais sobre números de porta, consulte Noções básicas sobre numeração de porta serial .Para se conectar a uma VM Linux:
ssh -i PRIVATE_SSH_KEY_FILE -p 9600 PROJECT_ID.ZONE.VM_NAME.USERNAME.OPTIONS@REGION-ssh-serialport.googleapis.com
Para se conectar a uma VM do 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
: a chave SSH privada da instância. -
PROJECT_ID
: o ID do projeto para esta instância de VM. -
ZONE
: a zona da instância de VM. -
REGION
: a região da instância de VM. -
VM_NAME
: o nome da instância da VM. -
USERNAME
: O nome de usuário que você está usando para se conectar à sua instância. Normalmente, este é o nome de usuário da sua máquina local. -
OPTIONS
: Opções adicionais que você pode especificar para esta conexão. Por exemplo, você pode especificar uma determinada porta serial e qualquer opção avançada . O número da porta pode ser de 1 a 4, inclusive. Para saber mais sobre números de porta, consulte Noções básicas sobre numeração de porta serial . Se omitido, você se conectará à porta serial 1. Baixe a chave de host SSH para o console serial que você usará:
Para conexões regionais, a chave do host SSH para uma região pode ser encontrada em
https://www.gstatic.com/vm_serial_port_public_keys/ REGION / REGION .pub
Para conexões globais, baixe a chave de host SSH da porta serial do Google
Abra seu arquivo de hosts conhecidos, geralmente localizado em
~/.ssh/known_hosts
.Adicione o conteúdo da chave do host SSH, com o nome do host do servidor anexado à chave. Por exemplo, se a chave do servidor us-central1 contiver a linha
ssh-rsa AAAAB3NzaC1yc...
, então~/.ssh/known_hosts
deverá ter uma linha como esta:[us-central1-ssh-serialport.googleapis.com]:9600 ssh-rsa AAAAB3NzaC1yc...
- Pressione a tecla
ENTER
. - Digite
~.
(til, seguido de ponto final). 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.O comando
exit
oulogout
não funciona porque o convidado não tem conhecimento de nenhuma conexão de rede ou modem. Usar esse comando faz com que o console feche e reabra novamente, e você permanece conectado à sessão. Se desejar habilitar comandosexit
elogout
para sua sessão, você pode habilitá-los definindo a opçãoon-dtr-low
.No console do Google Cloud, acesse a página de instâncias de VM .
Na coluna Nome , clique no nome da VM para a qual você deseja adicionar uma senha local.
A página de detalhes da VM é aberta.
Clique em
Editar .A página para editar os detalhes da VM é aberta.
Na seção Metadados > Automação , faça o seguinte:
Se a VM tiver um script de inicialização existente, remova-o e armazene o script 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 o seguinte:
USERNAME
: o nome de usuário que você deseja adicionar.PASSWORD
: a senha do nome de usuário. Como alguns sistemas operacionais exigem comprimento e complexidade mínimos de senha, especifique uma senha da seguinte maneira:Use pelo menos 12 caracteres.
Use uma combinação de letras maiúsculas e minúsculas, números e símbolos.
Clique em Salvar .
A página de detalhes da VM é aberta.
Clique em Redefinir .
Quando solicitado, insira suas informações de login.
No console do Google Cloud, acesse a página de instâncias de VM .
Na coluna Nome , clique no nome da VM para a qual você deseja adicionar uma senha local.
A página de detalhes da VM é aberta.
Clique em
Editar .A página para editar os detalhes da VM é aberta.
Na seção Metadados , faça o seguinte:
Se a VM tiver um script de inicialização existente, armazene o script em algum lugar seguro e, para excluí-lo, clique em
Excluir item .Clique em Adicionar item .
No campo Chave , insira
windows-startup-script-cmd
.No campo Valor , insira o seguinte script:
net user USERNAME PASSWORD /ADD /Y net localgroup administrators USERNAME /ADD
Substitua o seguinte:
USERNAME
: o nome de usuário que você deseja adicionar.PASSWORD
: a senha do nome de usuário. Como alguns sistemas operacionais exigem comprimento e complexidade mínimos de senha, especifique uma senha da seguinte maneira:Use pelo menos 12 caracteres.
Use uma combinação de letras maiúsculas e minúsculas, números e símbolos.
Clique em Salvar .
A página de detalhes da VM é aberta.
Clique em Redefinir .
Quando solicitado, insira suas informações de login.
Conecte-se à VM. Substitua
instance-name
pelo nome da sua instância.gcloud compute ssh instance-name
Na VM, crie uma senha local com o comando a seguir. Isso define uma senha para o usuário com o qual você está conectado no momento.
sudo passwd $(whoami)
Siga as instruções para criar uma senha.
Em seguida, efetue logout da instância e conecte-se ao console serial .
Digite suas informações de login quando solicitado.
Habilite o serviço temporariamente até a próxima reinicialização:
sudo systemctl start serial-getty@ttyS1.service
Habilite o serviço permanentemente, começando na 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
existente. 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 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 em um prompt de login no
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 Logs Explorer .
- Expanda o menu suspenso e selecione GCE VM Instance .
- Na barra de pesquisa, digite
ssh-serialport.googleapis.com
e pressione Enter . - Uma lista de logs de auditoria é exibida. Os logs descrevem conexões e desconexões de um console serial. Expanda qualquer uma das entradas para obter mais informações.
- Expanda a propriedade
protoPayload
. - Procure por
methodName
para ver a atividade à qual este log se aplica (uma solicitação de conexão ou desconexão). Por exemplo, se este log rastrear uma desconexão do console serial, o nome do método seria"google.ssh-serialport.v1.disconnect"
. Da mesma forma, um log de conexão diria"google.ssh-serialport.v1.connect"
. Uma entrada de log de auditoria é registrada no início e no final 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 acessar um canal desconhecido. Veja 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 obter mais informações, consulte Ativando o acesso interativo no console serial . -
google.rpcCode.UNAUTHENTICATED
: nenhuma chave SSH encontrada ou nenhuma chave SSH correspondente encontrada para esta instância. Verifique se você está autenticado na instância de VM . -
google.rpc.Code.UNKNOWN
: Ocorreu um erro desconhecido com sua solicitação. Você pode entrar em contato com o Google no grupo de discussão gce ou enviar um relatório de bug . Se você estiver tendo problemas para se conectar usando um cliente SSH padrão, mas
gcloud compute connect-to-serial-port
se conectar 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 ele teria executado em seu nome e comparar as opções com o comando que você está usando.Se você estiver usando uma VM do Windows com login do sistema operacional habilitado e encontrar um erro
UNAUTHENTICATED
, verifique se suas chaves SSH públicas foram postadas nos metadados do seu projeto ou instância. Para saber mais, consulte Gerenciando chaves SSH em metadados .Definindo a taxa de bits, também conhecida como taxa de transmissão, você pode definir qualquer taxa de bits que desejar, como
stty 9600
, mas o recurso normalmente força a taxa efetiva para 115.200 bps (~11,5kB/seg). Isso ocorre porque muitas imagens públicas têm como padrão taxas de bits lentas, como 9.600 no console serial, e inicializariam lentamente.Algumas imagens do sistema operacional possuem padrões inconvenientes 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 bash pode mascarar isso até que você tente definir uma senha, momento em que você pode se perguntar por que ele parece travado no promptpassword:
Algumas imagens públicas possuem chaves de controle de trabalho que são desativadas por padrão se você anexar um shell a uma porta de determinadas maneiras. Alguns exemplos dessas chaves incluem
^Z
e^C
. O comandosetsid
pode corrigir isso. Caso contrário, se você vir umjob control is disabled in this shell
, tome cuidado para não executar comandos que você precisará interromper.Você pode achar útil informar ao sistema o tamanho da janela que você está usando, para que o bash e os editores possam gerenciá-la adequadamente. Caso contrário, você poderá experimentar 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 o sinalizadorstty -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 para a máquina B e, em seguida, para a máquina C, criando uma sessão SSH aninhada, e quiser usar comandos til (~) para desconectar ou enviar um sinal de interrupção serial, você precisará adicionar caracteres til extras suficientes 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 tils consecutivos (Enter~~) é interpretado pelo cliente na máquina B e assim por diante. Você só precisa pressionar Enter uma vez porque isso é transmitido até o destino SSH mais interno. Isso é válido para qualquer uso de clientes SSH que forneçam o recurso de escape de til.
Se você perder o controle de quantos caracteres de til são necessários, pressione a tecla Enter e digite os caracteres de til, um de cada vez, até que a instância ecoe o til de volta. Este eco indica que você atingiu o fim da cadeia e agora sabe que para enviar um comando til para o cliente SSH mais aninhado, você precisa de um til a menos do que quantos tils você digitou.
-
replay-lines=N
: DefinaN
como o número de linhas que você deseja reproduzir. Por exemplo, seN
for 50, as últimas 50 linhas da saída do console serão incluídas. -
replay-bytes=N
: reproduz osN
bytes mais recentes. Você também pode definirN
comonew
, que reproduz todas as saídas que ainda não foram enviadas a nenhum cliente. -
replay-from=N
: reproduz a saída a partir de um índice de bytes absoluto que você fornece. Você pode obter o índice de bytes atual da saída do console serial fazendo uma solicitaçãogetSerialPortOutput
. Se você definirreplay-from
, todas as outras opções de reprodução serão ignoradas. -
replay-lines=N
ereplay-bytes=new
- Reproduza o número especificado de linhas OU reproduza todas as saídas não enviadas anteriormente a nenhum cliente, o que for maior. O primeiro cliente a se conectar com esta combinação de sinalizador verá toda a saída que foi enviada para a porta serial, e os clientes que se conectam subsquiando só verão as últimas
N
linhas. Exemplos: replay-lines=N
ereplay-bytes=M
- Replay linhas até, mas não mais do que o número de linhas ou bytes descritos por esses sinalizadores, o que for menor. Esta opção não reproduz mais do que
N
ouM
bytes. -
insert-stderr-note
: Insira uma nota nostderr
do cliente SSH, indicando que a saída foi descartada. Esta é a opção padrão. -
ignore
: Silenciosamente solta a saída e não faz nada. -
disconnect
: pare a conexão. - Saiba mais sobre a API
getSerialPortOutput
. - Aprenda a reter e visualizar a saída da porta serial, mesmo depois que uma instância da VM for excluída.
- Leia mais dicas de solução de problemas .
- Saiba mais sobre a aplicação de metadados .
- Aprenda sobre as 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.
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.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Ativando o acesso interativo no console serial
Habilite o acesso interativo ao console serial para instâncias de VM individuais ou para um projeto inteiro.
Ativando o acesso para um projeto
Habilitar o acesso interativo ao console serial em um projeto permite o acesso a todas as instâncias de VM que fazem parte desse projeto.
Por padrão, o acesso interativo à porta serial está desabilitado. Você também pode desativá-lo explicitamente definindo a chave
serial-port-enable
comoFALSE
. Em ambos os casos, qualquer configuração por instância substitui a configuração no nível do projeto ou a configuração padrão.Console
gcloud
Usando a CLI do Google Cloud, insira o comando
project-info add-metadata
da seguinte maneira:gcloud compute project-info add-metadata \ --metadata serial-port-enable=TRUE
DESCANSAR
Na API, faça uma solicitação ao
projects().setCommonInstanceMetadata
, fornecendo à chaveserial-port-enable
um valorTRUE
:{ "fingerprint": "FikclA7UBC0=", "items": [ { "key": "serial-port-enable", "value": "TRUE" } ] }
Habilitar o acesso para uma instância de VM
Habilite o acesso interativo ao console serial para uma instância específica. Uma configuração por instância, se existir, substitui qualquer configuração no nível do projeto. Você também pode desabilitar o acesso para uma instância específica, mesmo que o acesso esteja habilitado no nível do projeto, definindo
serial-port-enable
comoFALSE
, em vez deTRUE
. Da mesma forma, você pode habilitar o acesso para uma ou mais instâncias mesmo que esteja desabilitado para o projeto, explicitamente ou por padrão.Console
gcloud
Usando a Google Cloud CLI, insira o comando
instances add-metadata
, substituindoinstance-name
pelo nome da sua instância.gcloud compute instances add-metadata instance-name \ --metadata serial-port-enable=TRUE
DESCANSAR
Na API, faça uma solicitação ao método
instances().setMetadata
com a chaveserial-port-enable
e um valorTRUE
: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" } ] }
Configurar o console serial para uma instância bare metal
Para instâncias bare metal, aumente a taxa de bits, também conhecida como taxa de transmissão, do console serial para 115.200 bps (~11,5 kB/s). Usar uma velocidade mais lenta resulta em saída do console distorcida ou ausente.
A configuração do bootloader varia entre sistemas operacionais e versões de sistema operacional. Consulte a documentação do distribuidor do sistema operacional para obter instruções.
Se estiver modificando a taxa de bits na linha de comando da sessão atual, use um comando semelhante ao seguinte:
console=ttyS0,115200
Se estiver modificando a configuração do GRUB, use um comando semelhante ao seguinte:
serial --speed=115200
Certifique-se de atualizar a configuração real do bootloader. Isso pode ser feito com
update-grub
,grub2-mkconfig
ou um comando semelhante.Conectando-se a um console serial
O Compute Engine oferece gateways de console serial regionais para cada Google Cloudregião. Depois de ativar o acesso interativo ao console serial de uma VM, você poderá conectar-se a um console serial regional.
O console serial autentica usuários com chaves SSH . Especificamente, você deve 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 deseja 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 chaves SSH manualmente.
Se você estiver usando um cliente de terceiros, poderá validar adicionalmente a conexão usando as chaves de host do console serial . Quando você usa a CLI do Google Cloud para se conectar, a autenticação da chave do host é feita automaticamente em seu nome.
Console
Para se conectar ao console serial regional de uma VM, faça o seguinte:
gcloud
Para se conectar ao console serial regional de uma VM, use o comando
gcloud compute connect-to-serial-port
:gcloud compute connect-to-serial-port VM_NAME
--port=PORT_NUMBERSubstitua o seguinte:
Outros clientes SSH
Você pode se conectar ao console serial de uma instância usando outros clientes SSH de terceiros, desde que o cliente permita a conexão à porta TCP 9600. Antes de se conectar, você pode opcionalmente validar a conexão usando as chaves de host do console serial .
Para se conectar ao console serial regional de uma VM, execute um dos seguintes comandos, dependendo do sistema operacional da sua VM:
Substitua o seguinte:
Se você estiver tendo problemas para se conectar usando um cliente SSH de terceiros, poderá executar o comando
gcloud compute connect-to-serial-port
com a opção de linha de comando--dry-run
para ver o comando SSH que ele executaria em seu nome. Então você pode comparar as opções com o comando que está usando.Validar conexões de cliente SSH de terceiros
Ao usar um cliente SSH de terceiros que não seja a CLI do Google Cloud, você pode garantir que está protegido contra falsificação de identidade ou ataques man-in-the-middle verificando a chave de host SSH da porta serial do Google. Para configurar seu sistema para verificar a chave do host SSH, conclua as etapas a seguir:
Por motivos de segurança, o Google pode alterar ocasionalmente a chave de host SSH da porta serial do Google. Se o seu cliente não conseguir autenticar a chave do servidor, encerre imediatamente a tentativa de conexão e conclua as etapas anteriores para fazer download de uma nova chave de host SSH da porta serial do Google.
Se, após atualizar a chave do host, você continuar recebendo um erro de autenticação do host do seu cliente, interrompa as tentativas de conexão à porta serial e entre em contato com o suporte do Google. Não forneça credenciais em uma conexão em que a autenticação do host falhou.
Desconectando do console serial
Para desconectar do console serial:
Você pode descobrir outros comandos digitando
~?
ou examinando a página de manual do SSH:man ssh
Não tente desconectar usando nenhum dos seguintes métodos:
Conectando-se a um console serial com um prompt de login
Se você estiver tentando solucionar um problema com uma VM que foi inicializada completamente ou tentando solucionar um problema que ocorre após a inicialização da VM após o modo de usuário único, você poderá ser solicitado a fornecer informações de login ao tentar acessar o console serial.
Por padrão, as imagens do sistema Linux 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 porta serial, você precisará configurar uma senha local na VM para poder entrar no console serial, se solicitado. Você pode configurar uma senha local após conectar-se à VM ou usando um script de inicialização.
Configurando uma senha local usando um script de inicialização
Você pode usar um script de inicialização para configurar uma senha local que permite conectar-se ao console serial durante ou após a criação da VM.
Para configurar uma senha local em uma VM existente, selecione uma das seguintes opções:
Linux
Windows
Após a criação do usuário, substitua o script de inicialização pelo script de inicialização armazenado nesta seção.
Configurando 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 logon no console serial dessa VM usando a senha especificada.
Configurando um login em outras portas seriais
Os prompts de login são habilitados na porta 1 por padrão na maioria dos sistemas operacionais Linux. No entanto, a porta 1 muitas vezes pode ficar sobrecarregada com o registro de dados e outras informações impressas na porta. Em vez disso, você pode optar por ativar um prompt de login em outra porta, como a porta 2 (ttyS1), executando um dos seguintes comandos em sua VM. Você pode ver uma lista de portas disponíveis para uma VM em Noções básicas sobre numeração de porta serial .
A tabela a seguir lista imagens pré-configuradas com login de console serial e as portas padrão.
Sistema operacional Portas com prompt de login por padrão Gerenciamento de serviços CentOS 6 1 upstart
CentOS 7 1 systemd
Core OS 1 systemd
COS 1 systemd
Debian 8 1 systemd
Debian 9 1 systemd
OpenSUSE 13 1 systemd
Salto do OpenSUSE 1 systemd
RHEL 6 1 upstart
RHEL 7 1 systemd
LES 11 1 sysvinit
LES 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 Para ativar prompts de login em portas seriais adicionais, siga as instruções a seguir.
sistema
Para sistemas operacionais Linux usando
systemd
:novato
Para sistemas operacionais Linux usando
upstart
: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
Compreendendo a numeração da porta serial
Cada instância de máquina virtual possui quatro portas seriais. Para consistência com a API
getSerialPortOutput
, cada porta é numerada de 1 a 4. O Linux e outros sistemas semelhantes numeram suas portas seriais de 0 a 3. Por exemplo, em muitas imagens de sistema operacional, os dispositivos correspondentes são de/dev/ttyS0
a/dev/ttyS3
. O Windows refere-se às portas seriais comoCOM1
aCOM4
. Para se conectar ao que o Windows consideraCOM3
e o Linux considerattyS2
, você deve especificar a porta 3. Use a tabela a seguir para ajudá-lo a descobrir a qual porta você deseja se conectar.Portas seriais de 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
Observe que muitas imagens do Linux usam a porta 1 (
/dev/ttyS0
) para registrar mensagens do kernel e dos programas do sistema.Enviando uma quebra de série
O recurso principal Magic SysRq permite executar tarefas de baixo nível, independentemente do estado do sistema. Por exemplo, você pode sincronizar sistemas de arquivos, reinicializar a instância, encerrar processos e desmontar sistemas de arquivos usando o recurso Magic SysRq key.
Para enviar um comando Magic SysRq usando uma quebra de série simulada:
Visualizando logs de auditoria do console serial
O Compute Engine fornece registros de auditoria para rastrear quem se conectou e desconectou do console serial de uma instância. Para visualizar logs, você deve ter permissões para o Visualizador de Logs ou ser um visualizador ou editor do projeto.
Para qualquer um dos registros de auditoria, você pode:
Existem diferentes propriedades de log de auditoria para diferentes tipos de log. Por exemplo, os logs de auditoria relacionados a conexões possuem propriedades específicas dos logs de conexão, enquanto os logs de auditoria para desconexões possuem seu próprio conjunto de propriedades. Existem determinadas propriedades de log de auditoria que também são compartilhadas entre os dois tipos de log.
Todos os logs do console serial
A tabela a seguir fornece propriedades de log de auditoria e seus valores para todos os logs 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 contendo o ID do projeto, a zona, o nome da instância e o número da porta serial para indicar a qual console serial isso 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
Um carimbo de data/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; você pode usar isso 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 log de auditoria e seus valores específicos para logs 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 esta solicitação. Isso é usado para selecionar a chave pública a ser correspondida. operation.first
TRUE
status.code
Para solicitações de conexão bem-sucedidas, um valor status.code
degoogle.rpc.Code.OK
indica que a operação foi concluída com êxito e sem erros. Como o valor enum dessa propriedade é0
, a propriedadestatus.code
não é exibida. No entanto, qualquer código que verifique um valorstatus.code
degoogle.rpc.Code.OK
funcionará conforme o esperado.Registros de desconexão
A tabela a seguir fornece propriedades de log de auditoria e seus valores específicos para logs de desconexão:
Propriedade Valor methodName
google.ssh-serialport.v1.disconnect
response.duration
A quantidade de tempo, em segundos, que a sessão durou. response.@type
type.googleapis.com/google.compute.SerialConsoleSessionEnd
operation.last
TRUE
Registros de conexão com falha
Quando uma conexão falha, o Compute Engine cria uma entrada de registro de auditoria. Um log de conexão com falha é muito semelhante a uma entrada de conexão bem-sucedida, mas possui as propriedades a seguir para indicar uma conexão com falha.
Propriedade Valor severity
ERROR
status.code
O código de erro canônico da API do Google que melhor descreve o erro. A seguir estão os possíveis códigos de erro que podem aparecer:
status.message
A mensagem legível para esta entrada. Desativando o acesso ao console serial interativo
Você pode desabilitar o acesso ao console serial interativo alterando os metadados na instância ou projeto específico ou definindo uma Política da Organização que desabilite o acesso ao console serial interativo para todas as instâncias de VM para um ou mais projetos que fazem parte da organização.
Desativando o console serial interativo em uma instância ou projeto específico
Proprietários e editores de projetos, bem como usuários aos quais foi concedida a função
compute.instanceAdmin.v1
, podem desabilitar o acesso ao console serial alterando os metadados na instância ou projeto específico. Semelhante à ativação do acesso ao console serial , defina os metadadosserial-port-enable
comoFALSE
:serial-port-enable=FALSE
Por exemplo, usando a CLI do Google Cloud, você pode aplicar esses metadados a uma instância específica da seguinte forma:
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
Desativando o acesso ao console serial interativo por meio da Política da Organização
Se você tiver recebido a função
orgpolicy.policyAdmin
na organização, poderá definir uma política da organização que impeça o acesso interativo ao console serial, independentemente de o acesso ao console serial interativo estar ativado no servidor de metadados. Depois que a política da organização for definida, a política substituirá efetivamente a chave de metadadosserial-port-enable
e nenhum usuário da organização ou do projeto poderá habilitar o acesso interativo ao console serial. Por padrão, esta restrição é definida comoFALSE
.A restrição para desabilitar o acesso ao console serial interativo é a seguinte:
compute.disableSerialPortAccess
Conclua as instruções a seguir para definir esta política na organização. Depois de configurar uma política, você pode 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 sua organização . Por exemplo,1759840282
.gcloud resource-manager org-policies enable-enforce \ --organization organization-id compute.disableSerialPortAccess
DESCANSAR
Para definir uma política na API, faça uma solicitação
POST
para o URL a seguir. Substituaorganization-name
pelo nome da sua organização . Por exemplo,organizations/1759840282
.POST https://cloudresourcemanager.googleapis.com/v1/organization-name:setOrgPolicy
O corpo da solicitação deve 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, portanto, quaisquer projetos da organização param imediatamente de permitir o acesso interativo ao console serial.
Para desabilitar temporariamente a política, use o comando
disable-enforce
:gcloud resource-manager org-policies disable-enforce \ --organization organization-id compute.disableSerialPortAccess
Alternativamente, você pode fazer uma solicitação de API onde o corpo da solicitação define o parâmetro
enforced
comoFALSE
:{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Definir a política da organização no nível do projeto
Você pode definir a mesma política organizacional por projeto. Isso substitui a configuração no nível da organização.
gcloud
Para desativar a aplicação desta política para um projeto específico. Substitua
project-id
pelo ID do seu projeto.gcloud resource-manager org-policies disable-enforce \ --project project-id compute.disableSerialPortAccess
Você pode ativar a aplicação desta política usando o comando
enable-enforce
com os mesmos valores.DESCANSAR
Na API, faça uma solicitação
POST
para o seguinte URL para ativar o acesso interativo ao console serial para o projeto, substituindoproject-id
pelo ID do projeto:POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setOrgPolicy
O corpo da solicitação deve 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 truques
Opções avançadas
Você também pode usar as seguintes opções avançadas com a porta serial.
Controlando o máximo de conexões
Você pode definir a propriedade
max-connections
para controlar quantas conexões simultâneas podem ser feitas com esta porta serial por vez. O número padrão e máximo de conexões é 5. Por 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
Configurando opções de repetição
Por padrão, cada vez que você se conectar ao console serial, você receberá uma reprodução das últimas 10 linhas de dados, independentemente de as últimas 10 linhas terem sido vistas por outro cliente SSH. Você pode alterar essa configuração e controlar quantas e quais linhas serão retornadas definindo as seguintes opções:
Com a CLI do Google Cloud, anexe o seguinte ao comando
connect-to-serial-port
, ondeN
é o número especificado de linhas (ou bytes ou índice absoluto de bytes, dependendo da opção de reprodução que você está selecionando):--extra-args replay-lines=N
Se você 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
Você também pode 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
Manuseio de saída caiu
A mais recente 1 MIB de saída para cada porta serial está sempre disponível e, geralmente, seu cliente SSH não deve perder nenhuma saída da porta serial. Se, por algum motivo, seu cliente SSH parar de aceitar a saída por um período de tempo, mas não desconectar e mais de 1 MIB de novos dados é produzido, seu cliente SSH poderá perder alguma saída. Quando o seu cliente SSH não está aceitando dados com rapidez suficiente para acompanhar a saída na porta de console serial, você pode definir a propriedade
on-dropped-output
para determinar como o console se comporta.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
Permitindo desconectar usando comandos de saída ou logout
Você pode ativar a desconexão nos comandos de saída ou logout, configurando a propriedade
on-dtr-low
paradisconnect
quando você se conectar ao console serial.Na cli do Google Cloud, anexe o seguinte sinalizador ao seu comando
connect-to-serial-port
:--extra-args on-dtr-low=disconnect
Se você estiver usando um cliente SSH de terceiros, forneça esta opção no 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
Habilitar a opção
disconnect
pode fazer com que sua instância desconecte uma ou mais vezes quando você está reiniciando a instância porque o sistema operacional redefine as portas seriais enquanto inicializa.A configuração padrão para a opção
on-dtr-low
não énone
. Se você usar a configuração padrãonone
, poderá reiniciar sua instância sem estar desconectado do console serial, mas o console não desconectará por meio de meios normais, como comandosexit
oulogout
, ou combinações de chave normais como Ctrl+D.O que vem 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 2025-04-21 UTC.
-