Skip to content

Configuration

dssh keeps configuration minimal — everything fits in the settings table of the SQLite database. There are no YAML/TOML config files to edit; use dssh config (interactive) or the one-shot CLI flags.

PathWhat lives there
~/.dssh/dssh.dbSQLite database — connections, settings, crypto material
~/.ssh/configMain ssh config (when selected as ssh_config destination)
~/.ssh/config.d/dsshDirective file (when selected)
Custom pathAny file you chose during dssh config
$TMPDIR/dssh-askpass-*.shShort-lived askpass script (Unix; .bat on Windows)

The data dir is created with mode 0700 on first run. SQLite runs in WAL mode, so you’ll also see dssh.db-wal and dssh.db-shm alongside the main file — these are normal SQLite artifacts.

The parse mode controls where dssh reads and writes connections.

ModeSetting valueRead fromWrite to
SQLite onlysqlite_onlySQLiteSQLite
ssh_config onlyssh_config_onlyssh_config filessh_config file (key auth only)
BothbothBothPrompted per-save, or forced by default / --sqlite / --sshconfig

When you’re in both mode, two additional settings come into play:

  • parse_both_view_mode — which list the TUI shows first (sqlite or ssh_config). Toggle live with Ctrl+L.
  • parse_both_default_save_target — which store dssh add picks when you don’t pass --sqlite / --sshconfig.

Every persisted setting, by key:

KeyValuesNotes
parse_modesqlite_only, ssh_config_only, bothUnset = first-run dialog is shown
parse_both_view_modesqlite, ssh_configOnly meaningful in both mode
parse_both_default_save_targetsqlite, ssh_configOnly meaningful in both mode
ssh_config_parse_destinationAbsolute pathWhere to write ssh_config entries
argon2_salt16 random bytesCrypto: per-install salt
passphrase_checkAES-GCM ciphertext + nonce of "dssh-verify"Crypto: passphrase-correctness token

Don’t hand-edit these with sqlite3 unless you know what you’re doing — a bad argon2_salt or passphrase_check will lock you out of every stored password. Use dssh config for mode changes and dssh reset to start fresh.

Terminal window
dssh config get
parse_mode: both
ssh_config_parse_destination: ~/.ssh/config.d/dssh
parse_both_view_mode: sqlite
parse_both_default_save_target: sqlite

dssh config show is an alias for the same command.

Terminal window
dssh config

Opens the same dialog shown on first run. Pick a mode; if you chose anything with ssh_config, pick the destination file. Existing SQLite data is preserved on mode changes; the dialog never deletes connections.

Three persistent flags let you run a single command in a different mode without touching the saved config:

FlagEffect for this invocation
--sqliteBehave as if mode is sqlite_only
--sshconfigBehave as if mode is ssh_config_only
--bothBehave as if mode is both, defaulting to SQLite as the save target
Terminal window
# One-off: list what ssh_config has, even though we're in SQLite-only mode
dssh --sshconfig ls
# One-off: add to ssh_config without switching modes
dssh --sshconfig add teambox deploy@team.example.com

dssh reads standard environment variables used by ssh (it is ssh under the hood). It does not currently read custom variables for relocating ~/.dssh/ or ~/.ssh/config — the paths above are hard-coded relative to the user’s home directory. If you need a custom DB path, open an issue.

SSH_ASKPASS and SSH_ASKPASS_REQUIRE are set by dssh for password auth only, for the lifetime of the ssh child process. Your existing environment is preserved; DISPLAY is explicitly stripped to force ssh to use the askpass script instead of a GUI prompt.