Perder a chave SSH de uma VPS costuma significar dor de cabeça.
Na Oracle Cloud Infrastructure, isso pode virar um verdadeiro labirinto porque:
- O Ubuntu não permite login por senha no console serial
- O Run Command não funciona se o Cloud Agent estiver parado
- O Bastion não funciona se o plugin não estiver em RUNNING
Ou seja: você fica trancado fora da sua própria máquina.
Este tutorial mostra o caminho real que funciona, usando o Oracle Bastion Service e o Run Command.
🧠 Cenário do problema
Você tem uma VPS Ubuntu (24.04 Minimal) na OCI e:
- Perdeu o
.pem/.ppk - Não consegue SSH
- Console serial pede senha e não aceita
- Bastion dá erro dizendo que o plugin não está rodando
- Run Command não responde
Parece sem saída. Mas tem.
✅ Etapa 1 — Criar o Bastion (do jeito certo)
O erro mais comum é tentar usar o “Bastion plugin” dentro da VM.
Isso não é o Bastion Service.
Vá em:
Networking → Bastion → Create Bastion
- Mesma VCN da VPS
- Mesma Subnet da VPS
- Tipo: Standard
Aguarde ficar Active.
❌ Erro que vai acontecer agora
Ao tentar criar a sessão SSH, você recebe:
“Bastion plugin must be in RUNNING state”
Isso acontece porque o Oracle Cloud Agent dentro do Ubuntu não está ativo.
✅ Etapa 2 — Usar o Run Command para ligar o Cloud Agent
Vá na instância:
Management → Run Command → Create Command
Tipo: Run shell script
Cole:
#!/bin/bash
systemctl enable oracle-cloud-agent
systemctl restart oracle-cloud-agent
systemctl status oracle-cloud-agent --no-pager
Execute e aguarde Succeeded.
Agora vá em:
Oracle Cloud Agent → Bastion
Ele estará Running.
✅ Etapa 3 — Criar a sessão SSH no Bastion
Agora sim:
Dentro do Bastion → Create Session
- Tipo: SSH
- Target: sua VPS
- Usuário:
ubuntu - Cole uma nova public key gerada agora
A OCI vai gerar um comando SSH enorme.
⚠️ Problema clássico no Windows
Ao rodar o comando, o SSH acusa:
WARNING: UNPROTECTED PRIVATE KEY FILE!
Isso é permissão do arquivo no Windows.
Corrija com (PowerShell Admin):
icacls ssh-key.key /inheritance:r
icacls ssh-key.key /remove *S-1-5-11
icacls ssh-key.key /grant:r "$($env:USERNAME):(R)"
✅ Etapa 4 — Acesso via Bastion
Rodando o comando corretamente, você entra na VPS:
ubuntu@servidor:~$
✅ Etapa 5 — Corrigir o acesso definitivo
Agora troque o conteúdo do arquivo:
nano /home/ubuntu/.ssh/authorized_keys
Cole a chave pública do seu PuTTYgen (.ppk).
Ajuste permissões:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
❗ Erro final mais comum
Mesmo com tudo certo, o PuTTY falha.
Motivo:
Você está conectando como
oracle,opcouroot.
O usuário correto no Ubuntu da OCI é:
ubuntu
✅ Resultado final
- SSH funcionando direto pelo IP público
- Bastion não é mais necessário
- VPS intacta, sem precisar desmontar disco
- Sem downtime
🏁 Conclusão
Esse método é muito mais simples do que o procedimento antigo de:
desligar VPS → desanexar boot volume → montar em outra VM → editar arquivos
E funciona mesmo quando:
- Console não entra
- Run Command não responde inicialmente
- Bastion parece “quebrado”
O segredo é entender a ordem correta:
Run Command → Cloud Agent → Bastion → SSH → authorized_keys
Se você usa Oracle Cloud, vale salvar esse post.
Porque no dia que a chave sumir, isso aqui te salva.

