导入、导出、备份与恢复
Bayesian SSH 提供了两种数据导入导出方式:
- 导入与导出:以人类易读的格式(JSON、OpenSSH config,或导出专用的 TOML)传输连接配置与元数据,并支持可选的口令加密。
- 备份与恢复:捕获或还原完整的 SQLite 数据库快照,完整保留会话历史、使用统计、别名与标签。
使用 bssh import 将现有主机导入到你的 Bayesian SSH 数据库中。
导入 OpenSSH 配置文件
Section titled “导入 OpenSSH 配置文件”默认情况下,bssh import 会读取你本地的 ~/.ssh/config 文件(或 config.json 中通过 ssh_config_path 指定的路径):
bssh import✅ Successfully imported 14 connection(s) from SSH config若需指定其他配置文件路径:
bssh import -f ~/.ssh/config.d/work导入 SSH 配置时的核心行为:
- 解析主机属性:读取
Host、HostName、User、Port和IdentityFile。 - 自动添加标签:所有导入的主机均会自动附带
imported标签,方便后续集中检索或管理。 - 幂等性保障:若数据库中已存在同名连接,
bssh会自动跳过该主机而不报错,保留你已有的配置。 - 忽略跳板机:若希望将所有主机作为直连连接导入,而不继承已配置的全局默认跳板机,可传入
--no-bastion:
bssh import --no-bastion导入已加密的 JSON 备份
Section titled “导入已加密的 JSON 备份”如果你之前使用 bssh export --passphrase 导出了加密的连接列表,可以通过指定文件路径和口令完成导入:
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).使用 bssh export 共享主机列表、生成 OpenSSH 配置或创建加密备份。
# 将所有连接以 JSON 格式输出至标准输出bssh export
# 导出到指定文件bssh export -o hosts.jsonBayesian SSH 通过 --format 选项支持三种导出格式:
# 导出为 JSON 格式(默认)bssh export --format json -o hosts.json
# 导出为 TOML 格式bssh export --format toml -o hosts.toml
# 导出为标准 OpenSSH 配置格式bssh export --format ssh-config -o ~/.ssh/config.d/bssh-hosts| 格式 | 选项 | 描述 |
|---|---|---|
json |
--format json |
完整的连接模型 JSON 数组(默认)。 |
toml |
--format toml |
包含 [[connections]] 表格的 TOML 文档。 |
ssh-config |
--format ssh-config |
标准 OpenSSH 配置格式(Host、HostName、User、Port、IdentityFile,若有跳板机则写入 ProxyCommand)。 |
按标签过滤导出
Section titled “按标签过滤导出”若只需导出带有特定标签的主机,请使用 -t 或 --tag:
bssh export -t prod -o prod-hosts.json使用口令加密导出文件
Section titled “使用口令加密导出文件”为保护导出的连接详情,可在指定 -o 时搭配 -p 或 --passphrase:
bssh export -o hosts-backup.enc --passphrase "correct horse battery staple"🔒 Encrypting export with passphrase...✅ Exported 28 connections to hosts-backup.enc加密机制与安全性
Section titled “加密机制与安全性”加密导出采用经认证的加密方案,同时确保数据的保密性与完整性:
- 密钥派生:采用 Argon2id 算法(64 MiB 内存开销、3 轮迭代、1 个并行通道)从你的口令派生出 256 位加密密钥。
- 认证加密算法:采用 AES-256-GCM,配合 12 字节随机 Nonce 和 16 字节认证标签。
- 存储文件结构:以
BSSH标识头开头,后接版本字节(0x02)、16 字节盐值、12 字节 Nonce,以及追加了 GCM 标签的密文。 - 安全落盘:文件先以严格的
0600(-rw-------)权限写入目标目录下的临时文件,随后原子重命名至最终目标路径。
bssh export 仅序列化连接定义,而 bssh backup 则能够捕获完整的 SQLite 数据库快照,包括会话历史、排名权重和别名。
bssh backup✅ Database successfully backed up to: /home/user/.local/share/bayesian-ssh/backups/backup-2026-10-23-093000.db备份存储路径
Section titled “备份存储路径”默认情况下,备份会写入环境目录下的 backups/ 子文件夹中,并以时间戳命名:backup-YYYY-MM-DD-HHMMSS.db。
若需指定备份输出文件路径:
bssh backup -o ~/backups/bssh-snapshot.db备份目标文件在创建时即限制为 0600 权限(-rw-------),且 bssh backup 拒绝覆盖已经存在的文件。
使用 bssh restore 命令,可以用先前的备份快照替换当前正在使用的数据库。
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若在自动化脚本中需要跳过交互确认,请添加 -f 或 --force:
bssh restore ~/backups/bssh-snapshot.db -f安全性与验证保障
Section titled “安全性与验证保障”- 完整性校验:在修改当前活动数据库之前,
bssh会先校验目标文件确为完整的 SQLite 数据库,并包含 Bayesian SSH 所需的全部数据表。 - 恢复前快照:若当前数据库文件已存在,
bssh会在覆盖前自动对当前状态执行一次内部备份(VACUUM INTO)。 - 原子替换:恢复流程先将数据写入
0600临时文件,随后原子重命名到位,避免半写入损坏。 - 清理附属文件:旧数据库关联的预写式日志文件(
-wal、-shm和-journal)会被彻底清理,防止污染新恢复的数据。 - 自动架构迁移:打开恢复的数据库时,
bssh会自动执行所有待处理的数据表迁移,使较旧版本的备份能够平滑过渡。