SSH do navegador

A janela SSH do navegador permite o uso de SSH para realizar a conexão a uma instância de máquina virtual do Compute Engine no Console do Google Cloud. Não é preciso instalar extensões do navegador nem outro software para usar esse recurso. O SSH do navegador é uma alternativa a outros métodos de conexão a uma instância.

Como conectar-se a uma instância de VM do Linux

O Google Compute Engine gerencia as chaves SSH sempre que você se conecta a uma instância do Linux a partir do navegador, criando e aplicando pares de chaves SSH quando necessário. Não é possível gerenciar as chaves SSH que são usadas para se conectar a partir do navegador. Em vez disso, o acesso do usuário para conectar-se a partir do navegador é controlado pelos papéis do Cloud Identity and Access Management. Os membros e papéis de IAM de um projeto podem ser visualizados na página "IAM" no Console do Google Cloud:

Acessar a página "IAM"

Para se conectar por meio do navegador, é necessário ser membro do projeto e também administrador da instância do Compute. Se for possível executar a instância uma conta de serviço, também será necessário que você seja um usuário de conta de serviço. Caso você não tenha acesso para se conectar por meio do navegador, peça ao proprietário para adicioná-lo ao projeto e conceder acesso a você.

Após o acesso concedido, conecte-se a uma instância do Linux diretamente do seu navegador da Web no Console do Cloud:

  1. No Console do Cloud, acesse a página Instâncias de VM.

    Acessar a página Instâncias de VM

  2. Na lista de instâncias de máquina virtual, clique em SSH na linha da instância à qual você quer se conectar.

    Botão

Como alternativa, é possível abrir uma conexão SSH para uma instância clicando em seu nome e em SSH na página de detalhes da instância.

Agora, use o terminal para executar comandos na instância do Linux. Quando terminar, desconecte-se da instância usando o comando exit.

Ambientes compatíveis

O SSH a partir do navegador é compatível com o seguinte:

  • Navegadores da Web
    • Versão mais recente do Google Chrome
    • Firefox
    • Microsoft Edge
    • Microsoft Internet Explorer 11 e versões posteriores
    • Safari 8 e versões posteriores. Observe que o Safari em modo de navegação privada não é compatível.
  • Configurações de máquina virtual
    • Todas as imagens de VM do Linux estão disponíveis de maneira nativa no Google Cloud.

Problemas conhecidos

  • Tempos de transferência de chave SSH lentos. Por padrão, o SSH no navegador envia uma nova chave SSH aos metadados do projeto a cada nova conexão. Isso pode ser lento em projetos com grandes quantidades de VMs. Para acelerar a transferência de chaves, considere bloquear chaves SSH em todo o projeto ou ativar o Login do SO.

  • Latência de inicialização. O tempo de conexão atual usando o SSH do navegador é de 5 a 30 segundos. As versões atuais do ambiente convidado são compatíveis com conexões mais rápidas.

  • Novas instâncias de VM não ficam disponíveis imediatamente. Novas instâncias levam algum tempo para inicializar antes que o SSH possa ser estabelecido. Se você não conseguir se conectar a uma nova instância, tente novamente após alguns minutos.

  • Desconexões intermitentes. No momento, não oferecemos um SLA específico para o ciclo de vida da conexão. Use multiplexadores de terminal, como tmux ou screen, para manter a janela de terminal aberta por um período prolongado.

  • Conexão a instâncias que não têm endereço IP externo. Se a instância do Compute Engine tiver apenas um endereço IP interno, use uma das opções de conexão a seguir:

    • SSH do navegador com encaminhamento de TCP por meio do Identity-Aware Proxy configurado. Se uma instância sem IP externo for configurada para permitir o tunelamento de TCP por meio do IAP, também será possível conectar-se à instância usando o SSH do navegador.

    • SSH do navegador com Bastion Host. Para usar essa opção, as instâncias de destino e bastion precisam estar na mesma rede VPC ou em redes VPC conectadas.

      Para se conectar usando SSH do navegador com um bastion host, siga estas etapas:

      1. Use o SSH do navegador para se conectar a uma instância bastion que tem um endereço IP externo. Esta etapa gera um par de chaves SSH temporárias e faz o upload da chave pública para os metadados do projeto ou da instância do Bastion Host.
      2. A partir da instância bastion, conecte-se à instância de destino que tem apenas um endereço IP interno. Para se conectar à instância de destino a partir da instância bastion, execute o comando a seguir, substituindo internal-ip pelo endereço IP interno da instância de destino:

        ssh -A internal-ip

        Para usar a chave temporária gerada na primeira etapa, é necessário executar esse comando dentro de aproximadamente dois minutos depois de se conectar à instância bastion.

  • Ctrl+W fecha a janela. Ctrl+W, Ctrl+F4, Ctrl+Tab e outras combinações de teclas que funcionam como atalhos de teclado do navegador não são passadas pelo cliente SSH ao sistema de destino. Para enviar esses ou outros atalhos, clique no ícone de teclado no canto superior direito da janela. Se você usa o navegador Google Chrome, pode instalar a extensão "SSH para o Google Cloud Platform". A extensão aprimora a experiência de console para o SSH do navegador e do Cloud Shell. Para isso, concede acesso direto aos atalhos de teclado normalmente reservados pelo navegador, como Ctrl+W.

  • A transferência de arquivos grandes pode ser lenta. Recomendamos o uso do comando gcloud compute scp para transferir arquivos grandes.

Como tratar a mensagem de erro "Não foi possível conectar na porta 22"

Esse erro pode aparecer nas seguintes condições:

  • A instância está inicializando e o sshd ainda não está em execução Verifique se a instância terminou de inicializar antes de tentar novamente.

  • A instância não está executando sshd. sshd é executado por padrão em instâncias criadas a partir de imagens padrão do Compute Engine. Se você desativou o sshd manualmente ou configurou uma imagem personalizada que não está executando este serviço, o SSH do navegador não funcionará.

  • O sshd está escutando em uma porta diferente da que você está se conectando. Por padrão, o SSH a partir do navegador se conecta à instância na porta 22. Se você estiver executando o sshdem uma porta personalizada, conecte-se a ela usando o item Abrir na janela do navegador na porta personalizada na lista suspensa do botão SSH .

  • Não há regra de firewall que permita o acesso SSH pela porta. Por padrão, acesso SSH na porta 22 é ativado em todas as instâncias do Compute Engine. Se você desativou o acesso, o SSH do navegador não funcionará. Se você executar o sshd em uma porta diferente da 22, precisará ativar o acesso a essa porta usando uma regra de firewall personalizada.

  • A regra de firewall que permite o acesso SSH está ativada, mas não está configurada para permitir conexões dos serviços do Console do Cloud. Os endereços IP de origem para sessões SSH baseadas no navegador são alocados dinamicamente pelo Console do Cloud e podem variar de acordo com a sessão. Para que o recurso funcione, é preciso permitir conexões de qualquer endereço IP ou do intervalo de endereços IP do Google, que pode ser recuperado por meio de registros SPF públicos.

  • A instância está desligada. Verifique se a instância está em execução. Para informações sobre como solucionar problemas de uma instância não íntegra, consulte Dicas gerais sobre como usar o Compute Engine.

Como resolver o erro "Não foi possível conectar. Tentando novamente…"

  • A instância pode não estar executando o ambiente convidado. Verifique se o ambiente convidado está instalado e em execução.

  • O disco de inicialização da instância não tem mais espaço livre. Quando a conexão é estabelecida, o ambiente convidado atualiza o arquivo ~/.ssh/authorized_keys com a chave SSH pública usada na sessão atual. Caso o disco não tenha espaço livre, a atualização falhará. Para identificar problemas de espaço em disco, verifique a saída do console serial da instância e procure por erros de falta de espaço. Veja alguns métodos que podem ser usados para resolver problemas de espaço em disco:

    • Redimensione o disco permanente de inicialização da instância para aumentar o tamanho dele. Se a imagem do sistema operacional usada pela instância permitir o redimensionamento automático, essa será a opção mais fácil, já que o sistema operacional redimensionará automaticamente a partição raiz para corresponder ao novo tamanho depois que a instância for reiniciada.
    • Se você sabe quais arquivos estão consumindo o espaço em disco, crie um script de inicialização que exclua os arquivos desnecessários e libere espaço para que a instância seja iniciada. Reinicie a instância para que o script seja executado e limpe os arquivos. Tenha cuidado para usar o comando correto e excluir os arquivos corretos. Depois que a instância iniciar e você conseguir se conectar a ela pelo SSH, defina o item de metadados startup-script novamente para que ele não continue a excluir os arquivos.
    • Para obter mais informações sobre como acessar o disco da instância, consulte Dicas gerais sobre como usar o Compute Engine.
  • As permissões ou a propriedade em $HOME, $HOME/.ssh ou $HOME/.ssh/authorized_keys podem estar erradas.

    • Propriedade O ambiente convidado precisa ser capaz de armazenar a chave SSH pública no arquivo $HOME/.ssh/authorized_keys do usuário conectado. Verifique se o proprietário do diretório $HOME, do diretório $HOME/.ssh e do arquivo authorized_keys é o mesmo que o usuário conectado.
    • Permissões Altere o nome de usuário para se conectar como um usuário diferente e corrija os problemas de permissão do usuário que não consegue se conectar.

      Diretório/Arquivo Permissão obrigatória para o Unix
      O diretório $HOME 0755 ou
      0700
      O diretório $HOME/.ssh 0700
      Arquivo authorized_keys 0600

Copiar/Colar

É possível copiar e colar texto usando os atalhos de teclado compatíveis com seu navegador e plataforma (Ctrl+C/Ctrl+V no Windows e no Linux, Cmd+C/Cmd+V no macOS e Ctrl+Shift+V no Chrome OS). Em geral, esses comandos funcionam com a maioria das configurações, mas sua configuração pode apresentar resultados diferentes. Se você tiver problemas para copiar e colar grandes blocos de texto, use a transferência de arquivos.

Transfira arquivos

Se você conseguir estabelecer uma conexão SSH com uma instância usando SSH na janela do navegador, é possível usar essa conexão para transferir arquivos para a instância.

Para acessar mais informações, consulte Como transferir arquivos usando SSH no navegador.

Rolagem

É possível rolar o terminal usando a roda do mouse ou o trackpad. Como alternativa, os atalhos de teclado Ctrl+Shift+PageUp/Ctrl+Shift+PageDn rolam o terminal no Windows e no Linux e Fn+Shift+Up/Fn+Shift+Down rolam o terminal no macOS.

Nome de usuário do login

Nome de usuário padrão

Por padrão, um nome de usuário para sessões SSH é gerado a partir do endereço de e-mail conectado à conta, omitindo as informações de domínio. Por exemplo, se um e-mail for user@gmail.com, o nome de usuário correspondente seria user.

Nome de usuário padrão com o login do SO ativado

Se você tiver o login do SO ativado e um nome de usuário não for definido por um administrador do G Suite, por padrão, uma versão mais longa de nome de usuário será definida. Esse nome de usuário inclui as informações do domínio. Por exemplo, se um e-mail for user@gmail.com, o nome de usuário correspondente é user_gmail_com. Para obter mais informações sobre comportamentos de login no SO, consulte Comportamentos de login esperados.

Como alterar o nome de usuário padrão

É possível alterar o nome de usuário de dentro de uma janela SSH seguindo estas instruções:

  1. Conecte-se a uma instância de VM.
  2. No canto superior direito da janela SSH, clique no ícone Configurações Ícone Configurações.
  3. Selecione Alterar nome de usuário do Linux. Há um limite de 32 caracteres para o tamanho máximo do nome de login nos sistemas Linux. Portanto, os nomes de usuário padrão e configurados são truncados para não exceder esse limite.
  4. (Opcional) Copie os dados para o novo diretório base. Cada novo nome de usuário é um usuário Unix diferente, portanto, se você usou o diretório principal para armazenar quaisquer dados, poderá copiá-los para o novo diretório usando o comando cp. Por exemplo, se você alterar seu nome de usuário de user_gmail_com para user, execute os seguintes comandos:

    # This will overwrite files in the target directory, so be careful.
    $ sudo cp -r /home/user_gmail_com/. /home/user
    
    $ sudo chown -R user:user /home/user
    

Como usar a chave SSH privada fornecida pelo usuário

Como opção, é possível se conectar com uma chave SSH privada fornecida pelo usuário. Basta selecionar o item Abrir na janela do navegador usando a chave SSH privada fornecida na lista suspensa do botão SSH.

Para se conectar às instâncias com uma chave SSH fornecida pelo usuário, conclua estas etapas obrigatórias:

  1. Ative o atributo de login do SO no projeto ou em instâncias individuais.
  2. Configure a chave SSH pública com o perfil do Login do SO do usuário. Inclua o ID do projeto na solicitação para garantir que seu perfil esteja configurado corretamente.