Para entrar num servidor Linux a partir de um terminal não se usa uma palavra-passe mas sim uma chave SSH: um ficheiro que tem no seu computador e que a máquina reconhece. É mais seguro do que uma palavra-passe, e exatamente por isso, quando o ficheiro se perde, não há "esqueceu-se da palavra-passe?". Formatou o portátil, o técnico que a tinha já lá não está, o ficheiro ficou num disco velho: a máquina continua a funcionar mas ninguém consegue entrar.
Pense no que aconteceria se fosse amanhã, com o site de um cliente em serviço: na AWS não há um suporte que entre por si, a máquina é sua e a chave também. No Lightsail costuma haver saída, porque a sua consola consegue abrir um terminal na máquina sem a sua chave e a partir daí põe-se uma nova. Mas essa saída falha mais do que parece (uma firewall interna, uma configuração de SSH avariada, a caixa errada em Rede), no EC2 simplesmente não existe, e então o caminho passa por instantâneos e máquinas novas, ou por nada. Este guia percorre todas as saídas, da fácil à última, e termina com o que convém deixar preparado para não voltar a passar por isto.
Antes de começar: o que significa cada coisa
- SSH
- A forma de dar ordens a um servidor Linux escrevendo comandos a partir de outro computador, de maneira cifrada.
- Chave SSH (par de chaves)
- Dois ficheiros que andam juntos: a chave privada, que guarda você e nunca partilha, e a pública, que fica no servidor. O servidor deixa-o entrar se tiver a privada que corresponde à pública que ele conhece.
- Chave predefinida do Lightsail
- Quando cria uma máquina sem mais, o Lightsail usa uma chave sua por região, que pode descarregar a partir da sua conta em qualquer momento.
- Terminal do navegador
- O botão "Ligar através de SSH" da consola do Lightsail. Abre um terminal na máquina usando uma chave temporária gerida pela Amazon, sem precisar da sua.
- authorized_keys
- O ficheiro, dentro da máquina, onde estão as chaves públicas autorizadas a entrar. Acrescentar uma linha aí é acrescentar uma chave.
- Instantâneo
- Uma cópia completa da máquina. Ao criar uma máquina nova a partir dele pode escolher uma chave SSH diferente.
Passo a passo
Verifique se a máquina usa a chave predefinida
Na consola do Lightsail, abra a máquina. No separador Ligar diz que chave usa: se disser "chave predefinida" da sua região, está com sorte: vá ao menu da sua conta (em cima à direita), Conta, separador Chaves SSH, e descarregue a chave predefinida dessa região. Com esse ficheiro já pode entrar como sempre. Se a máquina usava uma chave que você carregou ou criou com nome próprio, continue a ler.
Entre com o terminal do navegador
Clique no botão Ligar através de SSH da máquina. Abre-se um terminal numa janela do navegador, já dentro da máquina, sem lhe pedir nada: o Lightsail usa para isto uma chave temporária própria. Se abrir, o problema está meio resolvido; agora vai pôr uma chave sua para voltar a entrar a partir do seu computador.
Crie uma chave nova no seu computador
Em Windows (PowerShell), Mac ou Linux, escreva num terminal do seu computador:
ssh-keygen -t ed25519 -f ~/.ssh/lightsail-nuevaPede-lhe uma palavra-passe para proteger a chave (recomendável). Cria dois ficheiros:
lightsail-nueva(privada, não a partilhe) elightsail-nueva.pub(pública). Abra o.pubcom um editor de texto e copie a sua única linha, que começa porssh-ed25519.Acrescente a chave pública na máquina
Volte ao terminal do navegador e escreva, colando a sua linha entre as aspas:
echo "ssh-ed25519 AAAA...tu-clave... comentario" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keysColar no terminal do navegador faz-se com o ícone da área de transferência da própria janela (carregar em Ctrl+V nem sempre funciona aí). Confirme com
tail -1 ~/.ssh/authorized_keysque a linha ficou inteira.Teste a partir do seu computador
A partir do terminal do seu computador:
ssh -i ~/.ssh/lightsail-nueva bitnami@IP-de-la-maquinaO utilizador é
bitnaminos modelos de aplicações,ubuntuno Ubuntu,ec2-userno Amazon Linux ouadminno Debian. Se entrar, guarde a chave privada num sítio seguro (um gestor de palavras-passe aceita ficheiros) e, desta vez, anote onde está.Se o terminal do navegador também não entra: instantâneo
Às vezes uma firewall interna da máquina ou uma configuração de SSH avariada impedem até o terminal do navegador. Nesse caso: separador Snapshots, crie um (ou use o automático mais recente), e a partir dele Criar nova instância. No formulário de criação, na secção da chave SSH, escolha a predefinida ou uma nova. A máquina nova é uma cópia exata com uma chave que tem mesmo. Mova o IP estático para a nova (guia nesta secção) e apague a velha quando confirmar que está tudo bem. Conte com uma hora larga e uma paragem, e faça-o com calma: é o momento em que é mais fácil estragar mais alguma coisa.
No EC2 não há terminal do navegador: o procedimento oficial
No EC2 a consola da AWS não consegue entrar por si. As saídas são duas. A automática: AWSSupport-ResetAccess, em Systems Manager → Automation, que para a máquina, trabalha sobre o seu disco a partir de uma máquina auxiliar e volta a arrancá-la com uma chave nova (a máquina vai estar parada uns minutos). A manual, para quem se desenrasca: parar a máquina, desligar o seu disco raiz, ligá-lo a outra máquina EC2, montar o disco e acrescentar a sua chave pública ao
authorized_keysdo utilizador, e devolver o disco ao seu lugar. Se a máquina tiver o agente do Systems Manager e uma função IAM, o Session Manager abre um terminal sem chave e poupa-lhe tudo o que ficou dito.E se também não houver instantâneo
É o fim da cadeia e convém olhá-lo de frente. Se o terminal do navegador não entra, se não é Lightsail, se a máquina foi apagada ou o disco está danificado, e não existe nenhuma cópia, não há nada a recuperar: a aplicação, a base de dados, os ficheiros, as configurações e os anos de trabalho que lá estivessem perdem-se. A AWS não consegue recuperar o que não foi copiado, e não há um serviço técnico a quem ligar. Não é um caso raro: acontece todos os anos a negócios que tomavam a máquina por "algo que simplesmente funciona".
Recuperado o acesso: deixe preparado o que lhe teria poupado tudo isto
- Instantâneos automáticos, todas as noites, e se possível uma cópia noutra região. É a única diferença entre uma hora de trabalho e perder tudo.
- Uma porta de emergência que não dependa de ficheiros em portáteis nem da consola da AWS: um utilizador de emergência que só aceite certificados assinados por si, como explica o guia da chave suplente.
- A chave privada num gestor de palavras-passe, partilhada com quem deva tê-la, e anotado onde está.
O que pode correr mal
O terminal do navegador diz que não consegue ligar
Quase sempre é a firewall interna da máquina (ufw, firewalld) que não deixa passar, ou então, ao restringir a porta 22 ao seu IP no Lightsail, desmarcou-se "Permitir SSH a partir do navegador do Lightsail". Reveja essa caixa no separador Rede. Se for a firewall interna, só resta a via do instantâneo.
Entro com a chave nova mas pede-me palavra-passe
Está a pedir a palavra-passe da chave, a que pôs no ssh-keygen, não a da máquina. É normal. Se não pôs nenhuma e mesmo assim pede palavra-passe, o servidor não reconheceu a chave: confirme que a linha no authorized_keys está completa e que as permissões são 600.
Quem tinha a chave já não trabalha aqui
Além de acrescentar a sua, apague a dele do authorized_keys (é uma linha; o comentário no fim costuma dizer de quem é). E veja se também tinha acesso à consola da AWS.
Perdi a chave de muitas máquinas ao mesmo tempo
Repita o processo em cada uma a partir do terminal do navegador. Se forem muitas, é o momento de pensar numa forma centralizada de entrar que não dependa de ficheiros em portáteis.
No Simplio
No Simplio ninguém guarda ficheiros de chave: o terminal no navegador abre-se com um botão a partir da própria máquina, pedindo o código do duplo fator, e usa a mesma chave temporária de uns minutos que a consola do Lightsail utiliza. O administrador decide que pessoas podem abri-lo e em que máquinas, e cada abertura fica registada com utilizador, máquina, data e IP. Se uma pessoa sai da empresa, tira-se-lhe o acesso com uma caixa, em todas as máquinas ao mesmo tempo.
E para o dia em que nem a consola do Lightsail entre, a chave suplente: um utilizador de emergência que o Simplio deixa na máquina com um botão, sem palavra-passe, que só aceita certificados de cinco minutos assinados pelo Simplio e só a partir do IP do Simplio. O Simplio confirma todos os dias que continua a abrir. Se ficar de fora, com o seu duplo fator acrescenta uma chave pública nova ao utilizador ou põe-lhe uma palavra-passe, sem instantâneos nem máquinas novas. Como funciona a chave suplente.
O mesmo, na AWS e no Simplio
| Na consola da AWS | No Simplio | |
|---|---|---|
| Voltar a entrar | Consola do Lightsail, terminal do navegador, gerar chave, colá-la, testar: 6 passos, 15 minutos e conhecimentos de terminal | Botão "Terminal" na máquina, com duplo fator: 10 segundos, sem ficheiros de chave |
| Dar acesso a outra pessoa | Repetir os passos 3 a 5 com a chave dela | Marcar a ação "terminal" e a máquina no utilizador dela |
| Tirar-lhe o acesso | Entrar e apagar a linha dela do authorized_keys em cada máquina | Desmarcar a caixa; fica no registo de atividade |
| Se o terminal do navegador não entra | Instantâneo, máquina nova, mover o IP, verificar serviços: uma hora larga e uma paragem | Com a chave suplente criada: "Resgatar" → chave pública nova ou palavra-passe nova para o utilizador, num minuto, sem parar nada |
| Se também não há instantâneo | Perde-se tudo: não há a quem ligar | Instantâneos agendados todas as noites, também noutra região, com aviso se falharem |