Banco atrás de Bastion (SSH)
Quando o banco não é alcançável de onde o backup roda, o BackupAlly abre um
túnel ssh -L por um bastion e conecta em 127.0.0.1:<porta local>. O túnel
é aberto uma vez por execução da task, antes do primeiro dump, e fechado
ao fim — com sucesso ou erro. Nenhum processo ssh sobrevive ao backup.
Configuração
[target]
kind = "database"
driver = "postgres"
host = "10.0.0.5" # ignorado quando ssh.enabled = true
port = 5432
user = "${secret:pg_user}"
password = "${secret:pg_password}"
[target.ssh]
enabled = true
host = "bastion.exemplo.com" # obrigatório
user = "backup" # padrão: root
port = 22
key_path = "/etc/backupally/keys/bastion" # ou deixe em branco e use o agente ssh
remote_host = "10.0.0.5" # host do banco VISTO DO BASTION (padrão: localhost)
# connect_timeout_secs = 15| Campo | Padrão | Descrição |
|---|---|---|
enabled |
false | Liga o túnel |
host |
— | Bastion (obrigatório) |
user |
root |
Usuário no bastion |
port |
22 | Porta do sshd do bastion |
key_path |
— | Chave privada; sem ela o ssh usa o agente e o ~/.ssh/config |
remote_host |
localhost |
Host do banco visto do bastion |
connect_timeout_secs |
15 | Prazo para o túnel ficar pronto |
O ssh usado é o do sistema: ~/.ssh/config, known_hosts e o agente do
servidor valem. Nunca há prompt interativo (BatchMode); sem chave nem
agente, o túnel falha com autenticação ssh falhou.
Host key
Primeira conexão grava a chave do bastion no known_hosts
(StrictHostKeyChecking=accept-new). Se a chave mudar depois, o backup
falha com host key mudou para <host>. Se a troca foi legítima (bastion
reinstalado), remova a entrada antiga:
ssh-keygen -R bastion.exemplo.comTestar antes de agendar
backupally task validate <id> --deepAbre o túnel de verdade, testa o banco por ele e fecha. A linha ssh
mostra o bastion, o destino e a porta local usada.
Vários bancos, um túnel
database = "*" ou modo individual: o mesmo túnel serve todos os bancos do
run. Duas tasks diferentes abrem túneis diferentes, cada uma na sua porta
local, mesmo apontando para o mesmo bastion.
Drivers
MySQL, PostgreSQL, MongoDB (forma host/port; uri não passa pelo túnel)
e ClickHouse. sqlite e fileset não aceitam [target.ssh].
Erros
| Erro | Causa | O que fazer |
|---|---|---|
chave ssh não encontrada: <path> |
key_path não existe |
Corrija o caminho |
autenticação ssh falhou |
Chave não autorizada no bastion ou agente sem ela | ssh -i <key> user@bastion à mão |
host key mudou para <host> |
Chave do bastion diferente da gravada | ssh-keygen -R <host> se legítimo |
túnel ssh saiu antes de ficar pronto: … |
O ssh encerrou (rede, porta remota fechada, forward negado) |
Veja o texto após o traço: é o stderr do ssh |
túnel ssh não ficou pronto em 15s |
Bastion lento ou remote_host:porta não responde |
Aumente connect_timeout_secs; confira o destino visto do bastion |