Ir al contenido

Importación, exportación, copia de seguridad y restauración

Bayesian SSH ofrece dos métodos para transferir datos:

  • Importación y exportación: Transfiere configuraciones de conexiones y metadatos en formatos legibles (JSON, configuración OpenSSH o TOML para exportaciones), con cifrado opcional mediante frase de contraseña.
  • Copia de seguridad y restauración: Captura o restaura una instantánea completa de la base de datos SQLite, incluyendo historial de sesiones, estadísticas de uso, alias y etiquetas.

Usa bssh import para incorporar hosts existentes a tu base de datos de Bayesian SSH.

Importar un archivo de configuración de OpenSSH

Sección titulada «Importar un archivo de configuración de OpenSSH»

De forma predeterminada, bssh import lee tu archivo ~/.ssh/config local (o la ruta configurada en config.json bajo ssh_config_path):

bssh import
✅ Successfully imported 14 connection(s) from SSH config

Para indicar un archivo de configuración alternativo:

bssh import -f ~/.ssh/config.d/work

Comportamientos clave durante la importación de configuración SSH:

  • Atributos de host: Procesa Host, HostName, User, Port e IdentityFile.
  • Etiquetado automático: Cada host importado recibe la etiqueta imported para que puedas filtrarlo o gestionarlo fácilmente.
  • Idempotencia: Si ya existe una conexión con el mismo nombre en la base de datos, bssh la omite sin error y conserva tu entrada actual.
  • Ignorar bastiones: Para importar hosts como conexiones directas en lugar de heredar el bastión por defecto configurado, añade --no-bastion:
bssh import --no-bastion

Importar una copia de seguridad JSON cifrada

Sección titulada «Importar una copia de seguridad JSON cifrada»

Si exportaste conexiones previamente usando bssh export --passphrase, impórtalas especificando la ruta del archivo y la frase de contraseña:

bssh import -f hosts-backup.enc --passphrase "correct horse battery staple"
🔓 Decrypting import file with passphrase...
✅ Imported 8 connection(s) from JSON backup (2 already existed).

Usa bssh export para compartir listas de hosts, generar configuraciones de OpenSSH o crear copias de seguridad cifradas.

# Exportar todas las conexiones en formato JSON a stdout
bssh export
# Exportar a un archivo
bssh export -o hosts.json

Bayesian SSH admite tres formatos de exportación mediante la opción --format:

# Exportar en formato JSON (predeterminado)
bssh export --format json -o hosts.json
# Exportar en formato TOML
bssh export --format toml -o hosts.toml
# Exportar en formato estándar OpenSSH config
bssh export --format ssh-config -o ~/.ssh/config.d/bssh-hosts
Formato Opción Descripción
json --format json Matriz JSON completa de modelos de conexión (predeterminado).
toml --format toml Documento TOML con tablas [[connections]].
ssh-config --format ssh-config Formato OpenSSH estándar (Host, HostName, User, Port, IdentityFile y ProxyCommand para bastiones).

Para exportar únicamente los hosts que coincidan con una etiqueta específica, utiliza -t o --tag:

bssh export -t prod -o prod-hosts.json

Cifrar exportaciones con una frase de contraseña

Sección titulada «Cifrar exportaciones con una frase de contraseña»

Para proteger los detalles de las conexiones exportadas, proporciona -p o --passphrase junto con -o:

bssh export -o hosts-backup.enc --passphrase "correct horse battery staple"
🔒 Encrypting export with passphrase...
✅ Exported 28 connections to hosts-backup.enc

Las exportaciones cifradas utilizan cifrado autenticado para asegurar tanto la confidencialidad como la integridad:

  • Derivación de claves: Argon2id con 64 MiB de memoria, 3 iteraciones y 1 hilo para derivar una clave de 256 bits a partir de tu frase de contraseña.
  • Cifrado autenticado: AES-256-GCM con un nonce aleatorio de 12 bytes y una etiqueta de autenticación de 16 bytes.
  • Formato del archivo: Un encabezado mágico BSSH seguido de un byte de versión (0x02), 16 bytes de sal, 12 bytes de nonce y el texto cifrado con la etiqueta de autenticación GCM añadida.
  • Escritura segura: Los archivos se generan a través de un archivo temporal con permisos estrictos 0600 (-rw-------) y se renombran de forma atómica sobre el destino.

Mientras que bssh export serializa las definiciones de conexiones, bssh backup captura la base de datos SQLite al completo, incluyendo el historial de sesiones, las ponderaciones de clasificación y los alias.

bssh backup
✅ Database successfully backed up to: /home/user/.local/share/bayesian-ssh/backups/backup-2026-10-23-093000.db

Por defecto, las copias de seguridad se guardan en un subdirectorio backups/ dentro del directorio de tu entorno, nombradas con una marca de tiempo: backup-YYYY-MM-DD-HHMMSS.db.

Para elegir un archivo de destino concreto:

bssh backup -o ~/backups/bssh-snapshot.db

El archivo de destino se crea con permisos 0600 (-rw-------) y bssh backup rechaza sobrescribir archivos existentes.

Usa bssh restore para sustituir tu base de datos activa por una instantánea previa.

bssh restore ~/backups/bssh-snapshot.db
⚠️ WARNING: This will replace your current database with:
~/backups/bssh-snapshot.db
Your existing database will be safely backed up first.
Are you sure you want to restore? [y/N] y
✅ Database successfully restored from: ~/backups/bssh-snapshot.db

Para omitir la confirmación en scripts automáticos, añade -f o --force:

bssh restore ~/backups/bssh-snapshot.db -f
  1. Comprobación de integridad: Antes de tocar tu base de datos activa, bssh comprueba que el archivo sea una base de datos SQLite intacta que contenga las tablas del esquema de Bayesian SSH.
  2. Instantánea previa: Si el archivo de la base de datos actual existe, bssh genera automáticamente una copia de seguridad interna (VACUUM INTO) antes de sobrescribir nada.
  3. Reemplazo atómico: La restauración se ejecuta copiando en un archivo temporal con permisos 0600 y renombrándolo de manera atómica a su ubicación final.
  4. Limpieza de archivos auxiliares: Los archivos de registro WAL de la base anterior (-wal, -shm y -journal) se eliminan limpiamente para evitar corrupciones en el archivo restaurado.
  5. Migración automática: Al abrir la base de datos restaurada, bssh aplica automáticamente cualquier migración de esquema pendiente, actualizando copias antiguas de forma transparente.