Aller au contenu

Enregistrement et relecture de session

Bayesian SSH peut enregistrer la sortie de vos sessions SSH dans des fichiers au format asciicast v2. Vous pouvez effectuer des recherches textuelles sur les sorties de vos sessions passées, rejouer des sessions dans votre terminal ou l’application de bureau, et définir des règles de rétention pour gérer l’espace disque.

L’enregistrement de session est désactivé par défaut. Vous pouvez l’activer globalement, le limiter à certains tags ou l’activer par connexion.

Activez l’enregistrement globalement :

bssh config --recording on

Pour n’enregistrer que les hôtes portant des tags spécifiques :

bssh config --recording-tags prod,critical

Pour désactiver à nouveau l’enregistrement :

bssh config --recording off

Vous pouvez également remplacer la configuration globale pour une connexion donnée à l’aide de --record ou --no-record :

# Enregistrer cette session même si l'enregistrement est désactivé globalement
bssh connect web-prod --record
# Ne pas enregistrer cette session même si l'enregistrement est activé globalement
bssh connect web-prod --no-record

Vous pouvez affiner les paramètres d’enregistrement dans le fichier config.json de votre environnement sous la clé recording :

{
"recording": {
"enabled": false,
"tags": ["prod"],
"max_bytes_per_session": 52428800,
"retention_days": 90
}
}
  • max_bytes_per_session : empêche un flux de logs incontrôlé de remplir votre disque. Si une session dépasse cette taille (par défaut : 50 Mio), bssh inscrit [bssh: recording truncated] et arrête la capture pour le reste de la session.
  • retention_days : délai en jours après lequel les anciens enregistrements et leurs index de recherche sont nettoyés (par défaut : 90 jours).

Les enregistrements sont stockés dans le répertoire recordings/ situé dans le dossier de données de votre environnement (par défaut, ~/.local/share/bayesian-ssh/recordings/ sous Linux).

  • Format : chaque session est écrite sous la forme d’un fichier asciicast v2 nommé <session_id>.cast. Ces fichiers peuvent être lus avec bssh replay ou tout lecteur compatible asciicast.
  • Autorisations : les fichiers sont créés d’emblée avec les droits stricts 0600 (-rw-------) avant que le moindre octet n’y soit écrit. Les autres utilisateurs locaux de votre machine ne peuvent pas lire les fichiers d’enregistrement.

Pour rejouer une session enregistrée dans votre terminal, transmettez son identifiant de session ou un préfixe unique (d’au moins 6 caractères) à bssh replay :

bssh replay 3f2a91c0

Vous pouvez ajuster la vitesse de lecture et limiter les temps d’inactivité :

# Doubler la vitesse de lecture
bssh replay 3f2a91c0 --speed 2.0
# Limiter les pauses d'inactivité à 1 seconde au maximum (par défaut : 2)
bssh replay 3f2a91c0 --idle-cap 1.0
Option Valeur par défaut Description
-s, --speed <FACTOR> 1 Multiplicateur de vitesse de lecture (par exemple, 2 pour doubler la vitesse).
--idle-cap <SECONDS> 2 Durée maximale de pause en secondes lors des périodes d’inactivité.

Dans l’application de bureau, ouvrez la vue History et cliquez sur une session dotée d’une icône d’enregistrement pour démarrer le lecteur intégré. Le lecteur de l’application prend en charge la lecture, la pause, le déplacement le long de la chronologie, le réglage de la vitesse (1x, 2x, 4x) et le saut direct vers la fin.

Rechercher dans le texte des sessions enregistrées

Section intitulée « Rechercher dans le texte des sessions enregistrées »

Bayesian SSH indexe le texte des sessions enregistrées à l’aide du module FTS5 (recherche plein texte) de SQLite. Avant l’indexation, les codes d’échappement de couleur ANSI et les déplacements de curseur sont supprimés afin de pouvoir rechercher le texte brut de manière fiable.

Pour rechercher une expression dans tous les enregistrements :

bssh history --grep "kernel panic"
CONNECTION STARTED SESSION SNIPPET
────────────────────────────────────────────────────────────────────────────────────────
web-prod 2026-10-23 09:14:22 3f2a91c0 ...systemd-journald: kernel panic - not syncing...
staging-api 2026-10-22 17:05:12 f4a10e82 ...kernel panic detected in crashdump...

Vous pouvez combiner --grep avec des filtres de connexion ou de date :

bssh history -c web-prod --days 14 --grep "certificate expired"

Lorsque les enregistrements de session atteignent le seuil de retention_days configuré (par défaut : 90 jours), bssh supprime automatiquement les fichiers .cast expirés et efface leurs entrées de la base de données et de l’index de recherche FTS5.

Ce nettoyage se produit automatiquement :

  • À la fin d’une session SSH.
  • Lors de l’exécution de bssh close --cleanup.
bssh close --cleanup
🗑️ Pruned 3 expired recording(s) (older than 90 days)

Pour conserver les enregistrements indéfiniment, définissez "retention_days": 0 dans votre fichier config.json.