Este documento descreve erros comuns que você pode encontrar ao se conectar a instâncias de máquina virtual (VM) usando SSH, maneiras de resolver erros e métodos para diagnosticar conexões SSH com falha.
Ferramenta de solução de problemas SSH
Use a ferramenta de solução de problemas SSH para ajudar a determinar por que uma conexão SSH falhou. A ferramenta de solução de problemas realiza os seguintes testes para verificar a causa das falhas nas conexões SSH:
- Testes de permissões de usuário: verifica se você tem as permissões de IAM necessárias para se conectar à VM usando SSH.
- Testes de conectividade de rede: verifica se a VM está conectada à rede.
- Testes de status da instância de VM: verifica o status da CPU da VM para ver se ela está em execução.
- Testes de configurações de VPC: verifica a porta SSH padrão.
Execute a ferramenta de solução de problemas
Você pode usar o console do Google Cloud ou a CLI do Google Cloud para verificar problemas de rede e erros de permissão do usuário que podem causar falhas nas conexões SSH.
Console
Depois que uma conexão SSH falhar, você terá a opção de tentar novamente a conexão ou solucionar problemas de conexão usando a ferramenta de solução de problemas de SSH no navegador.
Para executar a ferramenta de solução de problemas, clique em Solução de problemas .
gcloud
Execute a ferramenta de solução de problemas usando o comando gcloud compute ssh
:
gcloud compute ssh VM_NAME \ --troubleshoot
Substitua VM_NAME
pelo nome da VM à qual você não consegue se conectar.
A ferramenta solicita que você forneça permissão para realizar os testes de solução de problemas.
Revise os resultados
Depois de executar a ferramenta de solução de problemas, faça o seguinte:
- Revise os resultados do teste para entender por que a conexão SSH da VM não está funcionando.
- Resolva conexões SSH executando as etapas de correção fornecidas pela ferramenta.
Tente reconectar-se à VM.
Se a conexão não for bem-sucedida, tente solucionar problemas manualmente fazendo o seguinte:
Erros comuns de SSH
Veja a seguir exemplos de erros comuns que você pode encontrar ao usar SSH para se conectar a VMs do Compute Engine.
Erros de SSH no navegador
Erro não autorizado 401
O seguinte erro pode ocorrer quando você se conecta à sua VM usando o SSH no navegador do console do Google Cloud:
Unauthorized Error 401
Este erro ocorre se o usuário fizer parte de uma organização gerenciada no Google Workspace e houver uma restrição ativa na política do Workspace que impede os usuários de acessar o SSH no navegador e o console serial no Google Cloud.
Para resolver esse problema, peça a um administrador do Google Workspace que faça o seguinte:
Confirme isso Google Cloud está habilitado para a organização .
Se Google Cloud está desativado, ative-o e tente novamente a conexão.
Confirme se os serviços que não são controlados individualmente estão habilitados.
Se esses serviços estiverem desabilitados, habilite-os e tente novamente a conexão.
Se o problema persistir após ativar Google Cloud configurações no Google Workspace, faça o seguinte:
Capture o tráfego de rede em um arquivo HTTP Archive Format (HAR) a partir do momento em que você inicia a conexão SSH no navegador.
Crie um caso do Cloud Customer Care e anexe o arquivo HAR.
Não foi possível conectar, tentando novamente...
O seguinte erro pode ocorrer ao iniciar uma sessão SSH:
Could not connect, retrying ...
Para resolver esse problema, faça o seguinte:
Após a inicialização da VM, tente novamente a conexão. Se a conexão não for bem-sucedida, verifique se a VM não inicializou no modo de emergência executando o seguinte comando:
gcloud compute instances get-serial-port-output VM_NAME \ | grep "emergency mode"
Se a VM inicializar no modo de emergência, solucione problemas no processo de inicialização da VM para identificar onde o processo de inicialização está falhando.
Verifique se o serviço
google-guest-agent.service
está em execução executando o seguinte comando no console serial .systemctl status google-guest-agent.service
Se o serviço estiver desabilitado, habilite e inicie o serviço executando os seguintes comandos:
systemctl enable google-guest-agent.service systemctl start google-guest-agent.service
Verifique se os scripts do Linux Google Agent estão instalados e em execução. Para obter mais informações, consulte Determinação do status do agente do Google . Se o Linux Google Agent não estiver instalado, reinstale-o .
Verifique se você tem as funções necessárias para se conectar à VM. Se sua VM usar o login do sistema operacional, consulte Atribuir função IAM de login do sistema operacional . Se a VM não usar o Login do SO, você precisará da função de administrador da instância de computação ou da função de usuário da conta de serviço (se a VM estiver configurada para ser executada como uma conta de serviço). As funções são necessárias para atualizar a instância ou os metadados de chaves SSH do projeto.
Verifique se existe uma regra de firewall que permite acesso SSH executando o seguinte comando:
gcloud compute firewall-rules list | grep "tcp:22"
Verifique se existe uma rota padrão para a Internet (ou para o host bastião). Para obter mais informações, consulte Verificando rotas .
Certifique-se de que o volume raiz não esteja sem espaço em disco. Para obter mais informações, consulte Solução de problemas de discos cheios e redimensionamento de disco .
Certifique-se de que a VM não esteja sem memória executando o seguinte comando:
gcloud compute instances get-serial-port-output instance-name \ | grep "Out of memory: Kill process" - e "Kill process" -e "Memory cgroup out of memory" -e "oom"
Se a VM estiver sem memória, conecte-se ao console serial para solucionar problemas.
Erros do Linux
Permissão negada (chave pública)
O seguinte erro pode ocorrer quando você se conecta à sua VM:
USERNAME@VM_EXTERNAL_IP: Permission denied (publickey).
Este erro pode ocorrer por vários motivos. A seguir estão algumas das causas mais comuns desse erro:
Você usou uma chave SSH armazenada em metadados para se conectar a uma VM que tem o Login do SO habilitado. Se o Login do SO estiver ativado no seu projeto, o seu VM não aceita chaves SSH armazenadas em metadados. Se você não tiver certeza se o Login do SO está ativado, consulte Verificando se o Login do SO está configurado .
Para resolver esse problema, tente um dos seguintes:
- Conecte-se à sua VM usando o console do Google Cloud ou a CLI do Google Cloud. Para obter mais informações, consulte Conectando-se a VMs .
- Adicione suas chaves SSH ao login do sistema operacional. Para obter mais informações, consulte Adicionar chaves a VMs que usam login do sistema operacional .
- Desative o login do sistema operacional. Para obter mais informações, consulte Desativando o login do sistema operacional .
Você usou uma chave SSH armazenada em um perfil de Login do SO para se conectar a uma VM que não tem o Login do SO habilitado. Se você desabilitar o Login do SO, sua VM não aceitará chaves SSH que foram armazenadas no seu perfil de Login do SO. Se você não tiver certeza se o Login do SO está ativado, consulte Verificando se o Login do SO está configurado .
Para resolver esse problema, tente um dos seguintes:
- Conecte-se à sua VM usando o console do Google Cloud ou a CLI do Google Cloud. Para obter mais informações, consulte Conectando-se a VMs .
- Habilite o login do sistema operacional. Para obter mais informações, consulte Habilitando o login do sistema operacional .
- Adicione suas chaves SSH aos metadados. Para obter mais informações, consulte Adicionar chaves SSH a VMs que usam chaves SSH baseadas em metadados .
A VM tem o Login do SO habilitado, mas você não tem permissões de IAM suficientes para usar o Login do SO. Para se conectar a uma VM que tenha o Login do SO habilitado, você deve ter as permissões necessárias para o Login do SO. Se você não tiver certeza se o Login do SO está ativado, consulte Verificando se o Login do SO está configurado .
Para resolver esse problema, conceda as funções necessárias do IAM de login do SO .
Sua chave expirou e o Compute Engine excluiu seu arquivo
~/.ssh/authorized_keys
. Se você adicionou chaves SSH manualmente à sua VM e depois se conectou à VM usando o console do Google Cloud, o Compute Engine criou um novo par de chaves para sua conexão. Depois que o novo par de chaves expirou, o Compute Engine excluiu o arquivo~/.ssh/authorized_keys
da VM, que incluía a chave SSH adicionada manualmente.Para resolver esse problema, tente um dos seguintes:
- Conecte-se à sua VM usando o console do Google Cloud ou a CLI do Google Cloud. Para obter mais informações, consulte Conectando-se a VMs .
- Adicione novamente sua chave SSH aos metadados. Para obter mais informações, consulte Adicionar chaves SSH a VMs que usam chaves SSH baseadas em metadados .
Você se conectou usando uma ferramenta de terceiros e seu comando SSH está configurado incorretamente. Se você se conectar usando o comando
ssh
, mas não especificar um caminho para sua chave privada ou especificar um caminho incorreto para sua chave privada, sua VM recusará sua conexão.Para resolver esse problema, tente um dos seguintes:
- Execute o seguinte comando:
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
Substitua o seguinte:-
PATH_TO_PRIVATE_KEY
: o caminho para seu arquivo de chave SSH privado. -
USERNAME
: o nome de usuário do usuário que se conecta à instância. Se você gerencia suas chaves SSH em metadados, o nome de usuário é o que você especificou quando criou a chave SSH . Para contas de login do sistema operacional , o nome de usuário é definido no seu perfil do Google. -
EXTERNAL_IP
: o endereço IP externo da sua VM.
-
- Conecte-se à sua VM usando o console do Google Cloud ou a CLI do Google Cloud. Quando você usa essas ferramentas para se conectar, o Compute Engine gerencia a criação de chaves para você. Para obter mais informações, consulte Conectando-se a VMs .
- Execute o seguinte comando:
O ambiente convidado da sua VM não está em execução. Se esta for a primeira vez que você está se conectando à sua VM e o ambiente convidado não estiver em execução, a VM poderá recusar sua solicitação de conexão SSH.
Para resolver esse problema, faça o seguinte:
- Reinicie a VM.
- No console do Google Cloud, inspecione os registros de inicialização do sistema na saída da porta serial para determinar se o ambiente convidado está em execução. Para obter mais informações, consulte Validando o ambiente convidado .
- Se o ambiente convidado não estiver em execução, instale-o manualmente clonando o disco de inicialização da VM e usando um script de inicialização .
O OpenSSH Daemon (
sshd
) não está em execução ou configurado corretamente. Osshd
fornece acesso remoto seguro ao sistema via protocolo SSH. Se estiver configurado incorretamente ou não estiver em execução, você não poderá se conectar à sua VM via SSH.Para resolver esse problema, tente um ou mais dos seguintes procedimentos:
Revise o guia do usuário do seu sistema operacional para garantir que o
sshd_config
esteja configurado corretamente.Certifique-se de ter as configurações de propriedade e permissão necessárias para o seguinte:
- Diretórios
$HOME
e$HOME/.ssh
- Arquivo
$HOME/.ssh/authorized_keys
Propriedade
O ambiente convidado armazena chaves públicas SSH autorizadas no arquivo
$HOME/.ssh/authorized_keys
. O proprietário dos diretórios$HOME
e$HOME/.ssh
e do arquivo$HOME/.ssh/authorized_keys
deve ser o mesmo do usuário que está se conectando à VM.Permissões
O ambiente convidado requer as seguintes permissões do Linux:
Caminho Permissões /home
0755
$HOME
0700
ou0750
ou0755
*$HOME/.ssh
0700
$HOME/.ssh/authorized_keys
0600
* Para descobrir qual das opções é a permissão padrão correta para o seu diretório
$HOME
, consulte a documentação oficial da sua distribuição Linux específica.Alternativamente, você pode criar uma nova VM baseada na mesma imagem e verificar suas permissões padrão para
$HOME
.Para saber como alterar permissões e propriedade, leia sobre
chmod
echown
.- Diretórios
Reinicie o
sshd
executando o seguinte comando:systemctl restart sshd.service
Verifique se há algum erro no status executando o seguinte comando:
systemctl status sshd.service
A saída de status pode conter informações como o código de saída, o motivo da falha, etc. Você pode usar esses detalhes para solucionar problemas adicionais.
O disco de inicialização da VM está cheio. Quando uma conexão SSH é estabelecida, o ambiente convidado adiciona a chave SSH pública da sessão ao arquivo
~/.ssh/authorized_keys
. Se o disco estiver cheio, a conexão falhará.Para resolver esse problema, siga um ou mais destes procedimentos:
- Confirme se o disco de inicialização está cheio depurando com o console serial para identificar
no space left errors
. - Redimensione o disco.
- Se você souber quais arquivos estão usando o espaço em disco, crie um script de inicialização que exclua arquivos desnecessários e libere espaço. Depois que a VM for iniciada e você se conectar a ela, exclua os metadados
startup-script
.
- Confirme se o disco de inicialização está cheio depurando com o console serial para identificar
As permissões ou propriedade em
$HOME
,$HOME/.ssh
ou$HOME/.ssh/authorized_keys
estão erradas.Propriedade
O ambiente convidado armazena chaves públicas SSH autorizadas no arquivo
$HOME/.ssh/authorized_keys
. O proprietário dos diretórios$HOME
e$HOME/.ssh
e do arquivo$HOME/.ssh/authorized_keys
deve ser o mesmo do usuário que está se conectando à VM.Permissões
O ambiente convidado requer as seguintes permissões do Linux:
Caminho Permissões /home
0755
$HOME
0700
ou0750
ou0755
*$HOME/.ssh
0700
$HOME/.ssh/authorized_keys
0600
* Para descobrir qual das opções é a permissão padrão correta para o seu diretório
$HOME
, consulte a documentação oficial da sua distribuição Linux específica.Alternativamente, você pode criar uma nova VM baseada na mesma imagem e verificar suas permissões padrão para
$HOME
.Para saber como alterar permissões e propriedade, leia sobre
chmod
echown
.
Falha na conexão
Os erros a seguir podem ocorrer quando você se conecta à VM por meio do console do Google Cloud, da CLI gcloud, de um bastion host ou de um cliente local:
O console do Google Cloud:
Connection Failed We are unable to connect to the VM on port 22.
A CLI gcloud:
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].
Um host bastião ou um cliente local:
port 22: Connection timed out.
port 22: Connection refused
Esses erros podem ocorrer por vários motivos. A seguir estão algumas das causas mais comuns dos erros:
A VM está inicializando e
sshd
ainda não está em execução. Você não pode se conectar a uma VM antes de ela estar em execução.Para resolver esse problema, aguarde até que a VM termine a inicialização e tente conectar-se novamente.
sshd
está sendo executado em uma porta personalizada. Se você configurousshd
para ser executado em uma porta diferente da porta 22, não conseguirá se conectar à sua VM.Para resolver esse problema, crie uma regra de firewall personalizada permitindo o tráfego
tcp
na porta em que seusshd
está sendo executado usando o seguinte comando:gcloud compute firewall-rules create FIREWALL_NAME \ --allow tcp:PORT_NUMBER
Para obter mais informações sobre como criar regras de firewall personalizadas, consulte Criando regras de firewall .
A regra de firewall SSH está ausente ou não permite tráfego do IAP ou da Internet pública. As conexões SSH serão recusadas se as regras de firewall não permitirem conexões de tráfego de entrada IAP ou TCP para o intervalo de IP
0.0.0.0/0
.Para resolver esse problema, siga um destes procedimentos:
Se você usar o Identity-Aware Proxy (IAP) para encaminhamento de TCP, atualize sua regra de firewall personalizada para aceitar o tráfego do IAP e verifique suas permissões do IAM.
- Atualize sua regra de firewall personalizada para permitir o tráfego de
35.235.240.0/20
, o intervalo de endereços IP que o IAP usa para encaminhamento de TCP. Para obter mais informações, consulte Criar uma regra de firewall . - Conceda permissões para usar o encaminhamento TCP do IAP , caso ainda não tenha feito isso.
- Atualize sua regra de firewall personalizada para permitir o tráfego de
Se você não usa o IAP, atualize sua regra de firewall personalizada para permitir o tráfego SSH de entrada.
- Atualize sua regra de firewall personalizada para Permitir conexões SSH de entrada para VMs .
A conexão SSH falhou depois que você atualizou o kernel da VM. Uma VM pode sofrer um kernel panic após uma atualização do kernel, fazendo com que a VM fique inacessível.
Para resolver esse problema, faça o seguinte:
- Monte o disco em outra VM.
- Atualize o arquivo
grub.cfg
para usar a versão anterior do kernel. - Anexe o disco à VM que não responde.
- Verifique se o status da VM é
RUNNING
usando o comandogcloud compute instances describe
. - Reinstale o kernel .
- Reinicie a VM.
Como alternativa, se você criou um instantâneo do disco de inicialização antes de atualizar a VM, use o instantâneo para criar uma VM .
O OpenSSH Daemon (
sshd
) não está em execução ou configurado corretamente. Osshd
fornece acesso remoto seguro ao sistema via protocolo SSH. Se estiver configurado incorretamente ou não estiver em execução, você não poderá se conectar à sua VM via SSH.Para resolver esse problema, tente um ou mais dos seguintes procedimentos:
Revise o guia do usuário do seu sistema operacional para garantir que o
sshd_config
esteja configurado corretamente.Certifique-se de ter as configurações de propriedade e permissão necessárias para o seguinte:
- Diretórios
$HOME
e$HOME/.ssh
- Arquivo
$HOME/.ssh/authorized_keys
Propriedade
O ambiente convidado armazena chaves públicas SSH autorizadas no arquivo
$HOME/.ssh/authorized_keys
. O proprietário dos diretórios$HOME
e$HOME/.ssh
e do arquivo$HOME/.ssh/authorized_keys
deve ser o mesmo do usuário que está se conectando à VM.Permissões
O ambiente convidado requer as seguintes permissões do Linux:
Caminho Permissões /home
0755
$HOME
0700
ou0750
ou0755
*$HOME/.ssh
0700
$HOME/.ssh/authorized_keys
0600
* Para descobrir qual das opções é a permissão padrão correta para o seu diretório
$HOME
, consulte a documentação oficial da sua distribuição Linux específica.Alternativamente, você pode criar uma nova VM baseada na mesma imagem e verificar suas permissões padrão para
$HOME
.Para saber como alterar permissões e propriedade, leia sobre
chmod
echown
.- Diretórios
Reinicie o
sshd
executando o seguinte comando:systemctl restart sshd.service
Verifique se há algum erro no status executando o seguinte comando:
systemctl status sshd.service
A saída de status pode conter informações como o código de saída, o motivo da falha, etc. Você pode usar esses detalhes para solucionar problemas adicionais.
A VM não está inicializando e você não consegue se conectar usando SSH ou console serial. Se a VM estiver inacessível, seu sistema operacional poderá estar corrompido. Se o disco de inicialização não inicializar, você poderá diagnosticar o problema . Se você quiser recuperar a VM corrompida e recuperar dados, consulte Recuperando uma VM corrompida ou um disco de inicialização completo .
A VM está inicializando no modo de manutenção. Ao inicializar no modo de manutenção, a VM não aceita conexões SSH, mas você pode conectar-se ao console serial da VM e fazer login como usuário root.
Para resolver esse problema, faça o seguinte:
Se você não definiu uma senha root para a VM, use um script de inicialização de metadados para executar o seguinte comando durante a inicialização:
echo 'root:NEW_PASSWORD' | chpasswd
Substitua NEW_PASSWORD por uma senha de sua escolha.
Reinicie a VM.
Conecte-se ao console serial da VM e faça login como usuário root.
Erro inesperado
O seguinte erro pode ocorrer quando você tenta se conectar a uma VM Linux:
Connection Failed You cannot connect to the VM instance because of an unexpected error. Wait a few moments and then try again.
Esse problema pode ocorrer por vários motivos. A seguir estão algumas causas comuns do erro:
O OpenSSH Daemon (
sshd
) não está em execução ou configurado corretamente. Osshd
fornece acesso remoto seguro ao sistema via protocolo SSH. Se estiver configurado incorretamente ou não estiver em execução, você não poderá se conectar à sua VM via SSH.Para resolver esse problema, tente um ou mais dos seguintes procedimentos:
Revise o guia do usuário do seu sistema operacional para garantir que o
sshd_config
esteja configurado corretamente.Certifique-se de ter as configurações de propriedade e permissão necessárias para o seguinte:
- Diretórios
$HOME
e$HOME/.ssh
- Arquivo
$HOME/.ssh/authorized_keys
Propriedade
O ambiente convidado armazena chaves públicas SSH autorizadas no arquivo
$HOME/.ssh/authorized_keys
. O proprietário dos diretórios$HOME
e$HOME/.ssh
e do arquivo$HOME/.ssh/authorized_keys
deve ser o mesmo do usuário que está se conectando à VM.Permissões
O ambiente convidado requer as seguintes permissões do Linux:
Caminho Permissões /home
0755
$HOME
0700
ou0750
ou0755
*$HOME/.ssh
0700
$HOME/.ssh/authorized_keys
0600
* Para descobrir qual das opções é a permissão padrão correta para o seu diretório
$HOME
, consulte a documentação oficial da sua distribuição Linux específica.Alternativamente, você pode criar uma nova VM baseada na mesma imagem e verificar suas permissões padrão para
$HOME
.Para saber como alterar permissões e propriedade, leia sobre
chmod
echown
.- Diretórios
Reinicie o
sshd
executando o seguinte comando:systemctl restart sshd.service
Verifique se há algum erro no status executando o seguinte comando:
systemctl status sshd.service
A saída de status pode conter informações como o código de saída, o motivo da falha, etc. Você pode usar esses detalhes para solucionar problemas adicionais.
Problema desconhecido no daemon SSH . Para diagnosticar um problema desconhecido do daemon SSH, verifique se há erros nos logs do console serial .
Dependendo da saída dos logs do console serial, tente resgatar a VM e corrigir os problemas relacionados ao daemon SSH fazendo o seguinte:
- Anexe o disco a outra VM Linux.
- Conecte-se à VM que possui o disco montado.
- Monte o disco dentro do SO em um diretório MOUNT_DIR dentro da VM.
- Visualize os logs relacionados ao SSH,
/var/log/secure
ou/var/log/auth.log
para quaisquer problemas/erros. Se você encontrar algum problema que possa corrigir, tente corrigi-lo. Caso contrário, crie um caso de suporte e anexe os logs. Desmonte o disco do sistema operacional usando o comando
umount
:cd ~/ umount /mnt
Desconecte o disco da VM.
Anexe o disco à VM original.
Inicie a VM.
Falha ao conectar ao back-end
Os seguintes erros podem ocorrer quando você se conecta à VM por meio do console do Google Cloud ou da CLI gcloud:
O console do Google Cloud:
-- Connection via Cloud Identity-Aware Proxy Failed -- Code: 4003 -- Reason: failed to connect to backend
A CLI gcloud:
ERROR: (gcloud.compute.start-iap-tunnel) Error while connecting [4003: 'failed to connect to backend'].
Esses erros ocorrem quando você tenta usar o SSH para se conectar a uma VM que não possui um endereço IP público e para a qual você não configurou o Identity-Aware Proxy na porta 22.
Para resolver esse problema Crie uma regra de firewall na porta 22 que permita o tráfego de entrada do Identity-Aware Proxy.
A chave do host não corresponde
O seguinte erro pode ocorrer quando você se conecta à sua VM:
Host key for server IP_ADDRESS does not match
Este erro ocorre quando a chave do host no arquivo ~/.ssh/known_hosts
não corresponde à chave do host da VM.
Para resolver esse problema, exclua a chave do host do arquivo ~/.ssh/known_hosts
e tente novamente a conexão.
O valor dos metadados é muito grande
O seguinte erro pode ocorrer ao tentar adicionar uma nova chave SSH aos metadados:
ERROR:"Value for field 'metadata.items[X].value' is too large: maximum size 262144 character(s); actual size NUMBER_OF_CHARACTERS."
Os valores de metadados têm um limite máximo de 256 KB . Para atenuar essa limitação, siga um destes procedimentos:
- Exclua chaves SSH expiradas ou duplicadas dos metadados do projeto ou da instância. Para obter mais informações, consulte Atualizar metadados em uma VM em execução .
- Use o login do sistema operacional .
Erros do Windows
Permissão negada, tente novamente
O seguinte erro pode ocorrer quando você se conecta à sua VM:
USERNAME@compute.INSTANCE_ID's password: Permission denied, please try again.
Este erro indica que o usuário que está tentando se conectar à VM não existe na VM. A seguir estão algumas das causas mais comuns desse erro:
Sua versão da CLI gcloud está desatualizada
Se a CLI gcloud estiver desatualizada, você pode estar tentando se conectar usando um nome de usuário que não está configurado. Para resolver esse problema, atualize a CLI gcloud .
Você tentou se conectar a uma VM do Windows que não tem SSH habilitado.
Para resolver esse erro, defina a chave
enable-windows-ssh
comoTRUE
nos metadados do projeto ou da instância. Para obter mais informações sobre como configurar metadados, consulte Definir metadados personalizados .
Permissão negada (chave pública, teclado interativo)
O seguinte erro pode ocorrer quando você se conecta a uma VM que não tem SSH habilitado:
Permission denied (publickey,keyboard-interactive).
Para resolver esse erro, defina a chave enable-windows-ssh
como TRUE
nos metadados do projeto ou da instância. Para obter mais informações sobre como configurar metadados, consulte Definir metadados personalizados .
Não foi possível usar SSH na instância
O seguinte erro pode ocorrer quando você se conecta à VM por meio da CLI gcloud:
ERROR: (gcloud.compute.ssh) Could not SSH into the instance. It is possible that your SSH key has not propagated to the instance yet. Try running this command again. If you still cannot connect, verify that the firewall and instance are set to accept ssh traffic.
Este erro pode ocorrer por vários motivos. A seguir estão algumas das causas mais comuns dos erros:
Você tentou se conectar a uma VM do Windows que não tem SSH instalado.
Para resolver esse problema, siga as instruções para Habilitar SSH para Windows em uma VM em execução .
O servidor OpenSSH (
sshd
) não está em execução ou não está configurado corretamente. Osshd
fornece acesso remoto seguro ao sistema via protocolo SSH. Se estiver configurado incorretamente ou não estiver em execução, você não poderá se conectar à sua VM via SSH.Para resolver esse problema, revise a configuração do OpenSSH Server para Windows Server e Windows para garantir que
sshd
esteja configurado corretamente.
A conexão expirou
As conexões SSH expiradas podem ser causadas por um dos seguintes motivos:
A VM não concluiu a inicialização. Aguarde um pouco para a VM inicializar.
Para resolver esse problema, aguarde até que a VM termine a inicialização e tente conectar-se novamente.
O pacote SSH não está instalado. As VMs do Windows exigem que você instale o pacote
google-compute-engine-ssh
antes de poder se conectar usando SSH.Para resolver esse problema, instale o pacote SSH .
Diagnosticar conexões SSH com falha
As seções a seguir descrevem as etapas que você pode seguir para diagnosticar a causa das falhas nas conexões SSH e as etapas que você pode seguir para corrigir suas conexões.
Antes de diagnosticar conexões SSH com falha, conclua as etapas a seguir:
- Instale ou atualize para a versão mais recente da CLI do Google Cloud .
- Execute testes de conectividade .
- Se você estiver usando uma imagem personalizada do Linux que não esteja executando o ambiente convidado, instale o ambiente convidado do Linux .
- Se você usa o login do sistema operacional, consulte Solução de problemas de login do sistema operacional .
Métodos de diagnóstico para VMs Linux e Windows
Testar conectividade
Talvez você não consiga fazer SSH para uma instância de VM devido a problemas de conectividade vinculados a firewalls, conexão de rede ou conta de usuário. Siga as etapas nesta seção para identificar quaisquer problemas de conectividade.
Verifique suas regras de firewall
O Compute Engine provisiona cada projeto com um conjunto padrão de regras de firewall que permitem o tráfego SSH. Se você não conseguir acessar sua instância, use a ferramenta de linha de comando gcloud compute
para verificar sua lista de firewalls e garantir que a regra default-allow-ssh
esteja presente.
Na sua estação de trabalho local, execute o seguinte comando:
gcloud compute firewall-rules list
Se a regra de firewall estiver faltando, adicione-a novamente:
gcloud compute firewall-rules create default-allow-ssh \ --allow tcp:22
Para visualizar todos os dados associados à regra de firewall default-allow-ssh
no seu projeto, use o comando gcloud compute firewall-rules describe
:
gcloud compute firewall-rules describe default-allow-ssh \ --project=project-id
Para obter mais informações sobre regras de firewall, consulte Regras de firewall em Google Cloud .
Teste a conexão de rede
Para determinar se a conexão de rede está funcionando, teste o handshake TCP:
Obtenha o
natIP
externo para sua VM:gcloud compute instances describe VM_NAME \ --format='get(networkInterfaces[0].accessConfigs[0].natIP)'
Substitua
VM_NAME
pelo nome da VM à qual você não consegue se conectar.Teste a conexão de rede com sua VM na estação de trabalho:
Linux, Windows 2019/2022 e macOS
curl -vso /dev/null --connect-timeout 5 EXTERNAL_IP:PORT_NUMBER
Substitua o seguinte:
-
EXTERNAL_IP
: o endereço IP externo que você obteve na etapa anterior -
PORT_NUMBER
: o número da porta
Se o handshake TCP for bem-sucedido, a saída será semelhante a esta:
Expire in 0 ms for 6 (transfer 0x558b3289ffb0) Expire in 5000 ms for 2 (transfer 0x558b3289ffb0) Trying 192.168.0.4... TCP_NODELAY set Expire in 200 ms for 4 (transfer 0x558b3289ffb0) Connected to 192.168.0.4 (192.168.0.4) port 443 (#0) > GET / HTTP/1.1 > Host: 192.168.0.4:443 > User-Agent: curl/7.64.0 > Accept: */* > Empty reply from server Connection #0 to host 192.168.0.4 left intact
A linha
Connected to
indica um handshake TCP bem-sucedido.Janelas 2012 e 2016
PS C:> New-Object System.Net.Sockets.TcpClient('EXTERNAL_IP',PORT_NUMBER)
Substitua o seguinte:
-
EXTERNAL_IP
: o IP externo que você obteve na etapa anterior -
PORT_NUMBER
: o número da porta
Se o handshake TCP for bem-sucedido, a saída será semelhante a esta:
Available : 0 Client : System.Net.Sockets.Socket Connected : True ExclusiveAddressUse : False ReceiveBufferSize : 131072 SendBufferSize : 131072 ReceiveTimeout : 0 SendTimeout : 0 LingerState : System.Net.Sockets.LingerOption NoDelay : False
A linha
Connected: True
indica um handshake TCP bem-sucedido.-
Se o handshake TCP for concluído com êxito, uma regra de firewall de software não está bloqueando a conexão, o sistema operacional está encaminhando pacotes corretamente e um servidor está escutando na porta de destino. Se o handshake TCP for concluído com sucesso, mas a VM não aceitar conexões SSH, o problema pode ser que o daemon sshd
esteja configurado incorretamente ou não esteja funcionando corretamente. Revise o guia do usuário do seu sistema operacional para garantir que o sshd_config
esteja configurado corretamente.
Para executar testes de conectividade para analisar a configuração do caminho de rede VPC entre duas VMs e verificar se a configuração programada deve permitir o tráfego, consulte Verificar regras de firewall mal configuradas no Google Cloud .
Conecte-se como um usuário diferente
O problema que impede você de fazer login pode estar limitado à sua conta de usuário. Por exemplo, as permissões no arquivo ~/.ssh/authorized_keys
na instância podem não estar configuradas corretamente para o usuário.
Tente fazer login como um usuário diferente com a CLI gcloud especificando ANOTHER_USERNAME
com a solicitação SSH. A CLI gcloud atualiza os metadados do projeto para adicionar o novo usuário e permitir acesso SSH.
gcloud compute ssh ANOTHER_USERNAME@VM_NAME
Substitua o seguinte:
-
ANOTHER_USERNAME
é um nome de usuário diferente do seu -
VM_NAME
é o nome da VM à qual você deseja se conectar
Depurar problemas usando o console serial
Recomendamos que você revise os logs do console serial em busca de erros de conexão. Você pode acessar o console serial como usuário root a partir de sua estação de trabalho local usando um navegador. Essa abordagem é útil quando você não consegue fazer login com SSH ou se a instância não tiver conexão com a rede. O console serial permanece acessível em ambas as situações.
Para fazer login no console serial da VM e solucionar problemas com a VM, siga estas etapas:
Habilite o acesso interativo ao console serial da VM.
Para VMs Linux, modifique a senha raiz e adicione o seguinte script de inicialização à sua VM:
echo root:PASSWORD | chpasswd
Substitua PASSWORD por uma senha de sua preferência.
Use o console serial para conectar-se à sua VM .
Para VMs Linux, depois de depurar todos os erros, desative o login da conta root:
sudo passwd -l root
Métodos de diagnóstico para VMs Linux
Inspecione a instância da VM sem desligá-la
Você pode ter uma instância à qual não consegue se conectar e que continua atendendo corretamente ao tráfego de produção. Nesse caso, talvez você queira inspecionar o disco sem interromper a instância.
Para inspecionar e solucionar problemas do disco:
- Faça backup do seu disco de inicialização criando um instantâneo do disco .
- Crie um disco permanente regular a partir desse snapshot.
- Crie uma instância temporária.
- Anexe e monte o disco permanente regular à sua nova instância temporária.
Este procedimento cria uma rede isolada que permite apenas conexões SSH. Essa configuração evita quaisquer consequências não intencionais da instância clonada interferindo nos seus serviços de produção.
Crie uma nova rede VPC para hospedar sua instância clonada:
gcloud compute networks create debug-network
Substitua
NETWORK_NAME
pelo nome que você deseja chamar para sua nova rede.Adicione uma regra de firewall para permitir conexões SSH à rede:
gcloud compute firewall-rules create debug-network-allow-ssh \ --network debug-network \ --allow tcp:22
Crie um instantâneo do disco de inicialização.
gcloud compute disks snapshot BOOT_DISK_NAME \ --snapshot-names debug-disk-snapshot
Substitua
BOOT_DISK_NAME
pelo nome do disco de inicialização.Crie um novo disco com o snapshot que você acabou de criar:
gcloud compute disks create example-disk-debugging \ --source-snapshot debug-disk-snapshot
Crie uma nova instância de depuração sem um endereço IP externo:
gcloud compute instances create debugger \ --network debug-network \ --no-address
Anexe o disco de depuração à instância:
gcloud compute instances attach-disk debugger \ --disk example-disk-debugging
Siga as instruções para conectar-se a uma VM usando um host bastião .
Depois de fazer login na instância do depurador, solucione o problema da instância. Por exemplo, você pode consultar os logs da instância:
sudo su -
mkdir /mnt/VM_NAME
mount /dev/disk/by-id/scsi-0Google_PersistentDisk_example-disk-debugging /mnt/VM_NAME
cd /mnt/VM_NAME/var/log
# Identify the issue preventing ssh from working ls
Substitua
VM_NAME
pelo nome da VM à qual você não consegue se conectar.
Use um script de inicialização
Se nenhuma das opções anteriores ajudou, você poderá criar um script de inicialização para coletar informações logo após o início da instância. Siga as instruções para executar um script de inicialização .
Depois disso, você também precisará redefinir sua instância antes que os metadados entrem em vigor usando gcloud compute instances reset
.
Como alternativa, você também pode recriar sua instância executando um script de inicialização de diagnóstico:
Execute
gcloud compute instances delete
com a sinalização--keep-disks
.gcloud compute instances delete VM_NAME \ --keep-disks boot
Substitua
VM_NAME
pelo nome da VM à qual você não consegue se conectar.Adicione uma nova instância com o mesmo disco e especifique seu script de inicialização.
gcloud compute instances create NEW_VM_NAME \ --disk name=BOOT_DISK_NAME,boot=yes \ --metadata startup-script-url URL
Substitua o seguinte:
-
NEW_VM_NAME
é o nome da nova VM que você está criando -
BOOT_DISK_NAME
é o nome do disco de inicialização da VM à qual você não consegue se conectar -
URL
é o URL do Cloud Storage para o script, no formatogs:// BUCKET / FILE
ouhttps://storage.googleapis.com/ BUCKET / FILE
.
-
Use seu disco em uma nova instância
Se ainda precisar recuperar dados do disco de inicialização persistente, você poderá desanexar o disco de inicialização e, em seguida, anexar esse disco como um disco secundário em uma nova instância.
Exclua a VM à qual você não consegue se conectar e mantenha seu disco de inicialização:
gcloud compute instances delete VM_NAME \ --keep-disks=boot
Substitua
VM_NAME
pelo nome da VM à qual você não consegue se conectar.Crie uma nova VM com o disco de inicialização da sua VM antiga . Especifique o nome do disco de inicialização da VM que você acabou de excluir.
Conecte-se à sua nova VM usando SSH:
gcloud compute ssh NEW_VM_NAME
Substitua
NEW_VM_NAME
pelo nome da sua nova VM.
Verifique se o disco de inicialização da VM está cheio ou não
Sua VM poderá ficar inacessível se o disco de inicialização estiver cheio. Este cenário pode ser difícil de solucionar, pois nem sempre é óbvio quando o problema de conectividade da VM é devido a um disco de inicialização cheio. Para obter mais informações sobre esse cenário, consulte Solução de problemas de uma VM inacessível devido a um disco de inicialização completo .
Métodos de diagnóstico para VMs do Windows
Redefinir metadados SSH
Se você não conseguir se conectar a uma VM do Windows usando SSH, tente desabilitar a chave de metadados enable-windows-ssh
e reativar o SSH para Windows.
Defina a chave de metadados
enable-windows-ssh
comoFALSE
. Para obter informações sobre como definir metadados, consulte Definir metadados personalizados .Aguarde alguns segundos para que a alteração ocorra.
Conecte-se à VM usando RDP
Se você não conseguir diagnosticar e resolver a causa da falha nas conexões SSH com sua VM do Windows, conecte-se usando RDP .
Depois de estabelecer uma conexão com a VM, revise os logs do OpenSSH .
O que vem a seguir?
- Saiba como as conexões SSH com VMs Linux funcionam no Compute Engine.