Aller au contenu

Importation, exportation, sauvegarde et restauration

Bayesian SSH propose deux méthodes pour transférer vos données :

  • Importation et exportation : transférez les paramètres de vos connexions et leurs métadonnées dans des formats lisibles (JSON, configuration OpenSSH ou TOML pour les exports), avec chiffrement optionnel par phrase secrète.
  • Sauvegarde et restauration : capturez ou restaurez un instantané complet de la base de données SQLite, comprenant l’historique des sessions, les statistiques d’utilisation, les alias et les tags.

Utilisez bssh import pour intégrer vos hôtes existants dans la base de données de Bayesian SSH.

Par défaut, bssh import lit votre fichier ~/.ssh/config local (ou le chemin défini dans config.json sous ssh_config_path) :

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

Pour indiquer un autre fichier de configuration :

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

Comportements clés lors de l’importation de configuration SSH :

  • Attributs des hôtes : analyse les directives Host, HostName, User, Port et IdentityFile.
  • Ajout automatique de tag : chaque hôte importé reçoit le tag imported afin que vous puissiez le filtrer ou le gérer facilement.
  • Idempotence : si une connexion du même nom existe déjà dans votre base de données, bssh l’ignore sans erreur et conserve votre entrée actuelle.
  • Ignorer les bastions : pour importer les hôtes en tant que connexions directes au lieu d’hériter du bastion par défaut configuré, ajoutez --no-bastion :
bssh import --no-bastion

Si vous avez précédemment exporté des connexions avec bssh export --passphrase, importez-les en fournissant le chemin du fichier et la phrase secrète :

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).

Utilisez bssh export pour partager des listes d’hôtes, générer des configurations OpenSSH ou créer des sauvegardes chiffrées.

# Exporter toutes les connexions au format JSON sur la sortie standard
bssh export
# Exporter dans un fichier
bssh export -o hosts.json

Bayesian SSH prend en charge trois formats d’exportation via l’option --format :

# Exporter au format JSON (par défaut)
bssh export --format json -o hosts.json
# Exporter au format TOML
bssh export --format toml -o hosts.toml
# Exporter au format standard OpenSSH config
bssh export --format ssh-config -o ~/.ssh/config.d/bssh-hosts
Format Option Description
json --format json Tableau JSON complet des modèles de connexion (par défaut).
toml --format toml Document TOML contenant les tables [[connections]].
ssh-config --format ssh-config Format OpenSSH standard (Host, HostName, User, Port, IdentityFile et ProxyCommand pour les bastions).

Pour exporter uniquement les hôtes associés à un tag donné, utilisez -t ou --tag :

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

Chiffrer les exportations avec une phrase secrète

Section intitulée « Chiffrer les exportations avec une phrase secrète »

Pour protéger les détails des connexions exportées, indiquez -p ou --passphrase conjointement avec -o :

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

Les exportations chiffrées utilisent un chiffrement authentifié pour garantir à la fois la confidentialité et l’intégrité :

  • Dérivation de clé : Argon2id avec 64 Mio de mémoire, 3 itérations et 1 fil d’exécution pour dériver une clé de 256 bits à partir de votre phrase secrète.
  • Chiffrement authentifié : AES-256-GCM avec un nonce aléatoire de 12 octets et une étiquette d’authentification de 16 octets.
  • Format de fichier : un en-tête magique BSSH suivi d’un octet de version (0x02), d’un sel de 16 octets, d’un nonce de 12 octets et du texte chiffré auquel est ajoutée l’étiquette GCM.
  • Écriture sécurisée : les fichiers sont d’abord écrits dans un fichier temporaire aux droits stricts 0600 (-rw-------), puis renommés de façon atomique vers la destination finale.

Tandis que bssh export sérialise les définitions de connexions, bssh backup capture l’intégralité de la base de données SQLite, y compris l’historique des sessions, les pondérations de classement et les alias.

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

Par défaut, les sauvegardes sont enregistrées dans un sous-répertoire backups/ situé dans votre dossier d’environnement, avec un horodatage : backup-YYYY-MM-DD-HHMMSS.db.

Pour choisir un fichier de destination spécifique :

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

Le fichier cible est créé avec les permissions 0600 (-rw-------) et bssh backup refuse d’écraser un fichier existant.

Utilisez bssh restore pour remplacer votre base de données active par un instantané de sauvegarde antérieur.

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

Pour ignorer l’invite de confirmation dans les scripts automatisés, ajoutez -f ou --force :

bssh restore ~/backups/bssh-snapshot.db -f
  1. Vérification d’intégrité : avant de modifier votre base active, bssh vérifie que le fichier cible est bien une base SQLite intacte contenant les tables requises par le schéma de Bayesian SSH.
  2. Sauvegarde préalable : si votre fichier de base actuel existe, bssh effectue automatiquement une sauvegarde interne de sécurité (VACUUM INTO) avant tout écrasement.
  3. Remplacement atomique : la restauration copie les données dans un fichier temporaire aux permissions 0600 avant de le renommer de façon atomique à son emplacement final.
  4. Nettoyage des fichiers annexes : les fichiers temporaires du journal SQLite de l’ancienne base (-wal, -shm et -journal) sont proprement supprimés afin qu’ils ne puissent pas corrompre le fichier restauré.
  5. Migrations automatiques : dès l’ouverture de la base restaurée, bssh applique automatiquement les éventuelles migrations de schéma en attente, assurant ainsi la mise à niveau transparente des sauvegardes plus anciennes.