Skip to content

v0.7.0 - SSH Key Passphrase Support

Choose a tag to compare

@z41hk z41hk released this 17 Sep 12:50
· 11 commits to main since this release

What's New

SSH Key Passphrase Prompt

KRemote now supports encrypted SSH private keys with interactive passphrase prompts.

Features:

  • Detects when an SSH private key requires a passphrase and prompts instead of failing
  • Clean material dialog for passphrase entry (obscured input, show/hide toggle)
  • Passphrase is passed transiently to the SSH layer, never persisted to the vault
  • Works for both initial connection and reconnect scenarios
  • Applies to both direct SSH connections and jump host tunnels

Technical:

  • New \PassphraseDialog\ widget (\lib/widgets/passphrase_dialog.dart)
  • \Connection\ model gained a transient \private_key_passphrase\ field, marked #[serde(skip)]\ so it's never written to the vault file
  • Detection: attempt the connection first; if libssh2 returns an error whose message mentions 'passphrase', 'encrypted', or 'decrypt', prompt for a passphrase and retry
  • Implemented in \home_screen.dart\ (Test Connection) and \ abbed_terminal_screen.dart\ (session connect/reconnect)

Known limitation: detection relies on matching substrings in libssh2's error text rather than inspecting the PEM header directly. This works reliably in practice but is a bit fragile compared to checking the key file for an \ENCRYPTED\ header before attempting to connect.

Why this matters: Most security-conscious users encrypt their private keys with a passphrase. Previously KRemote had no way to supply one, so encrypted keys simply couldn't be used.

Downloads

  • Windows x64: KRemote-v0.7.0-windows-x64.zip

Installation

Extract the zip and run kremote.exe. Your existing vault and connections are preserved.

Full changelog: v0.6.0...v0.7.0