Como solucionar problemas usando o console serial (original) (raw)

Linux Windows


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, consulteValores booleanos.

Antes de começar

Console

When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

gcloud

  1. 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.
  2. Set a default region and zone.

REST

Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI 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.
Para mais informações, consulteAutenticar para usar REST na documentação de autenticação do Google Cloud .

Permissões exigidas para a tarefa

Para executar esta tarefa, é necessário ter as permissões a seguir:

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 como FALSE. 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

  1. No Google Cloud console, acesse a página Metadados.
    Acessar a página "Metadados"
  2. Clique em Editar para editar entradas de metadados.
  3. Adicione uma nova entrada que use a chave serial-port-enable e o valor TRUE.
  4. Salve as alterações.

gcloud

Usando a Google Cloud CLI, digite o comandoproject-info add-metadatada 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 à chave serial-port-enable um valor de TRUE:

{ "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 como FALSE em vez de TRUE. 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

  1. No Google Cloud console, acesse a página Instâncias de VM:
    Acessar a página "Instâncias de VM"
  2. Clique na instância para que você quer ativar acesso.
  3. Clique em Editar.
  4. Na seção Acesso remoto, marque a caixa de seleção Ativar conexão com portas seriais.
  5. Salve as alterações.

gcloud

Usando a Google Cloud CLI, digite o comandoinstances add-metadata, substituindo instance-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 chave serial-port-enable e um valor de TRUE:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance/setMetadata { "fingerprint": "zhma6O1w2l8=", "items": [ { "key": "serial-port-enable", "value": "TRUE" } ] }

No caso das instâncias bare metal, aumente a taxa de bits, também conhecida como taxa de Baud, do console serial para 115.200 bps (cerca de 11,5 kB/s). Usar uma velocidade mais lenta resulta em saídas do console distorcidas ou ausentes.

A configuração do carregador de inicialização varia entre os sistemas operacionais e as versões de SO. Consulte a documentação do distribuidor do SO para mais instruções.

Para modificar a taxa de bits na linha de comando para a sessão atual, use um comando semelhante ao seguinte:

console=ttyS0,115200

Para modificar a configuração do GRUB, use um comando semelhante ao seguinte:

serial --speed=115200

Atualize a configuração real do carregador de inicialização. Isso pode ser feito com update-grub, grub2-mkconfig ou um comando semelhante.

Conexão com um console serial

O Compute Engine oferece gateways regionais de console serial para cada Google Cloud região. Depois de ativar o acesso interativo para o console serial de uma VM, é possível se conectar a um console serial regional.

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 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.

Se você estiver usando um cliente de terceiros, também poderávalidar a conexão usando as chaves do host do console serial. Quando você usa a Google Cloud CLI 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:

  1. No Google Cloud console, acesse a página Instâncias de VM:
    Acessar a página "Instâncias de VM"
  2. Clique na instância à qual você quer se conectar.
  3. Em Detalhes, clique em Conectar ao console serial para se conectar à porta padrão (porta 1).
  4. 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.
  5. Para instâncias do Windows, abra o menu suspenso ao lado do botão e conecte-se à Porta 2 para acessar o console serial.

gcloud

Para se conectar ao console serial regional de uma VM, use ocomando gcloud compute connect-to-serial-port:

gcloud compute connect-to-serial-port VM_NAME

  --port=PORT_NUMBER

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. Antes de se conectar, você podevalidar a conexão usando as chaves do host do console serial.

Para se conectar ao console serial regional de uma VM, execute um dos seguintes comandos, dependendo do SO da VM:

Substitua:

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.

Validar conexões de clientes SSH de terceiros

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 verificando a chave do host SSH da porta serial do Google. Para configurar seu sistema para verificar a chave do host SSH, siga estas etapas:

  1. Faça o download da chave do host SSH referente ao console serial que você vai usar:
    • No caso das conexões regionais, a chave SSH do host para uma região pode ser encontrada emhttps://www.gstatic.com/vm_serial_port_public_keys/REGION/REGION.pub.
    • No caso das conexões globais, faça o download da chave de host SSH de porta serial do Google.
  2. Abra seu arquivo de hosts conhecido, normalmente localizado em ~/.ssh/known_hosts.
  3. 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 tiver a linhassh-rsa AAAAB3NzaC1yc..., ~/.ssh/known_hosts precisará ter uma linha semelhante ao seguinte:
    [us-central1-ssh-serialport.googleapis.com]:9600 ssh-rsa AAAAB3NzaC1yc...

Por motivos de segurança, o Google pode alterar a chave SSH do host da porta serial do Google de vez em quando. Se o cliente não conseguir 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 de host de porta serial do Google.

Depois de atualizar a chave de host, se você continuar a receber um erro de autenticação de host do 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 em uma conexão com falha naautenticação do host.

Como se desconectar do console serial

Para se desconectar do console serial, siga as instruções do método usado para a conexão.

Console

No console Google Cloud , desconecte do console serial fazendo o seguinte:

  1. Feche a janela ou guia do navegador que contém a conexão do console serial.

gcloud

Na Google Cloud CLI, desconecte do console serial fazendo o seguinte:

  1. Pressione a tecla ENTER.
  2. Digite ~. (til seguido de um ponto).

Outros clientes SSH

Em outros clientes SSH, desconecte do console serial fazendo o seguinte:

  1. Pressione a tecla ENTER.
  2. Digite ~. (til seguido de um ponto).

Na Google Cloud CLI ou usando o SSH, é possível descobrir outros comandos digitando ~?. Você também pode examinar a página man do SSH com o seguinte comando:

man ssh

Não use nenhum destes métodos 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 a VM estiver executando uma imagem predefinida com logins de portas seriais, será necessário configurar uma senha local nela para que seja possível 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 a conexão com o console serial durante ou após a criação da VM.

Para configurar uma senha local em uma VM, selecione uma das seguintes opções:

Linux

  1. No Google Cloud console, acesse a página Instâncias de VM:
    Acessar instâncias de VM
  2. Na coluna Nome, clique no nome da VM em que você quer adicionar uma senha local.
    A página de detalhes da VM é aberta.
  3. Clique em Editar.
    A página para editar os detalhes da VM é aberta.
  4. Na seção Metadados > Automação, faça o seguinte:
    1. Se a VM tiver um script de inicialização, remova-o e armazene-o em um local seguro.
    2. 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 Como alguns sistemas operacionais exigem o comprimento mínimo e a complexidade da 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.

  5. Clique em Salvar.
    A página de detalhes da VM é aberta.
  6. Clique em Redefinir.
  7. Conecte-se ao console serial.
  8. Quando solicitado, insira suas informações de login.

Windows

  1. No Google Cloud console, acesse a página Instâncias de VM:
    Acessar instâncias de VM
  2. Na coluna Nome, clique no nome da VM em que você quer adicionar uma senha local.
    A página de detalhes da VM é aberta.
  3. Clique em Editar.
    A página para editar os detalhes da VM é aberta.
  4. Na seção Metadados, faça o seguinte:
    1. Se a VM tiver um script de inicialização, armazene-o em um local seguro e, para excluí-lo, clique emExcluir item.
    2. Clique em Adicionar item.
    3. No campo Chave, digite windows-startup-script-cmd.
    4. 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 Como alguns sistemas operacionais exigem o comprimento mínimo e a complexidade da 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.

  5. Clique em Salvar.
    A página de detalhes da VM é aberta.
  6. Clique em Redefinir.
  7. Conecte-se ao console serial.
  8. Quando solicitado, insira suas informações de login.

Depois que o usuário for criado, substitua o script de inicialização pelo script armazenado nesta seção.

Como configurar uma senha local usando passwd na VM

As 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.

  1. Conecte-se à VM. Substitua instance-name pelo nome da instância.
    gcloud compute ssh instance-name
  2. 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)
  3. Siga os prompts para criar uma senha.
  4. Em seguida, saia da instância e estabeleça conexão com o console serial.
  5. Insira suas informações de login quando solicitado.

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 emNoçõ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:

  1. Crie um novo arquivo /etc/init/ttyS1.conf para refletir ttyS1 copiando e modificando um arquivo ttyS0.conf. 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"
  2. Inicie uma solicitação de login em ttyS1 sem reiniciar:
    sudo start ttyS1

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 de COM1 a COM4. Para estabelecer conexão com o que o Windows considera como COM3 e o Linux considera como ttyS2, você especificaria a porta 3. Use a tabela a seguir para descobrir a qual porta você deve se conectar.

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.

Como enviar uma interrupção serial

O recursochave Magic SysRqpermite realizar tarefas simples, 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:

  1. Pressione a tecla ENTER.
  2. Digite ~B (til seguido de B maiúsculo).
  3. Digite o comando Magic SysRq.

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.

  1. No console Google Cloud , acesse a página Explorador de registros.
    Acessar o Explorador de registros
  2. Expanda o menu suspenso e selecione GCE VM Instance.
  3. Na barra de pesquisa, digite ssh-serialport.googleapis.com e pressione Enter.
  4. Uma lista de registros de auditoria é exibida. Os registros descrevem conexões e desconexões de um console serial. Abra qualquer uma das entradas para mais informações.

Em qualquer um dos registros de auditoria, é possível realizar estas ações:

  1. Expandir a propriedade protoPayload.
  2. 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.

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ância example-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 de google.rpc.Code.OK indica a conclusão da operação sem nenhum erro. Como o valor da enum desta propriedade é0, a propriedade status.code não é exibida. No entanto, qualquer código que confirmar um valor status.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: 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.
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 metadados serial-port-enable como FALSE:

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 metadados serial-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 como FALSE.

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 peloID 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: Substitua organization-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"

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 como FALSE:

{ "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, substituindo project-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"

Exemplo:

{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }

Dicas e sugestões

Opções avançadas

Também é possível usar as opções avançadas a seguir com a porta serial.

Controle do 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 que N é 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. Exemplo:

replay-lines=N e replay-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:

gcloud compute connect-to-serial-port instance-name--port port-number --extra-args replay-lines=N,replay-bytes=new

ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.replay-lines=N.replay-bytes=new@ssh-serialport.googleapis.com

replay-lines=N e replay-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 vai reproduzir mais do queN ou M bytes.

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 de saída mais recente de cada porta serial sempre está disponível e, em geral, o cliente SSH não perde 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:

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 como disconnect 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ão none, 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 comandos exit ou logout, ou combinações de teclas normais, como Ctrl + D.

A seguir