QuickSSH is a Flow Launcher plugin for connecting to saved SSH and SCP profiles, running reusable remote actions, managing SSH keys, importing OpenSSH configuration, and choosing custom terminal shells.
Type ssh to open a focused menu with Profiles, Actions, Tools, and Help.
- Guided SSH profile setup with server, port, and authentication steps
- Full SSH/SCP command support for tunnels, ProxyJump, remote commands, and file transfers
- Reusable remote actions with mandatory review and confirmation before execution
- SSH key registration, generation, discovery, clipboard helpers, and public-key installation
- Human-readable profile export/import in an SSH-config-like format
- Portable-aware storage inside the Flow Launcher plugin settings directory
- Custom terminal shells with fail-closed launch behavior
- Accent-insensitive fuzzy search and localized navigation
- English, German, Spanish, French, Polish, Russian, and Slovak interfaces
- Open Flow Launcher.
- Type
pm install QuickSSH. - Install the plugin and restart Flow Launcher when prompted.
- Type
ssh.
- Download
QuickSSH.zipfrom the latest release. - Extract it as a single plugin folder inside Flow Launcher's user plugin directory.
- Restart Flow Launcher.
- Type
ssh.
- Windows
- Flow Launcher
- OpenSSH Client (
ssh.exe) available inPATH ssh-keygenonly when generating a new keypair
| Command | Purpose |
|---|---|
ssh |
Open the main QuickSSH menu |
ssh profiles |
Browse, search, connect, or manage saved profiles |
ssh actions |
Run or manage reusable remote commands |
ssh tools |
Open SSH keys, shell, and configuration tools |
ssh keys |
Use or manage SSH key aliases |
ssh shell |
Select or manage the terminal shell |
ssh config |
Import hosts from ~/.ssh/config |
ssh help |
Open this documentation |
ssh user@example.com |
Start a one-time SSH connection |
ssh -p 2222 user@example.com |
Start a one-time connection on another port |
ssh -i "~/.ssh/private_key" user@example.com |
Start a one-time connection with an identity file |
QuickSSH commands remain in English in every localized interface. Press Enter on menu rows to navigate or perform the displayed action.
Profiles store structured SSH or SCP connection settings. The default guided flow asks for:
- a profile name,
user@hostorhost,- port
22or another value from1to65535, - a saved private key, or SSH agent/configuration.
Port 22 is treated as the default and is not stored explicitly. A selected identity file must exist and be recognized by content as a private SSH key. Public keys are rejected even when the file name does not end in .pub.
Common examples:
ssh profiles add demo-server demo@example.com
ssh profiles add staging admin@192.0.2.10
ssh profiles add custom-port tester@203.0.113.25
For tunnels, SCP, ProxyJump, remote commands, or other advanced options, use the full-command path:
ssh profiles add staging ssh -p 2222 admin@192.0.2.10
ssh profiles add production ssh -i "~/.ssh/private_key" -o IdentitiesOnly=yes deploy@example.com
ssh profiles add tunnel ssh -L 8443:127.0.0.1:443 user@example.com
ssh profiles add internal ssh -J bastion.example.com user@192.0.2.20
ssh profiles add upload scp "C:\example\index.html" user@example.com:/var/www/html/index.html
Manage profiles groups the regular maintenance actions:
- add,
- rename,
- copy SSH command,
- export,
- import,
- remove.
Removal requires confirmation. Rename and add operations never silently overwrite an existing name.
ssh profiles export writes a human-readable .sshconfig file to the plugin data directory.
ssh profiles import accepts:
.sshconfigexports,- legacy
.jsonprofile dictionaries for migration.
Before importing, QuickSSH creates profiles.json.import.bak next to the active database. Existing profile names are skipped rather than overwritten. The result reports imported and skipped counts, and a failed save restores both the previous file and the in-memory state.
Actions are named, reusable single-line commands such as:
hostname
uptime
systemctl status nginx
The normal flow is:
- choose a saved action,
- choose an SSH profile,
- review the action and generated SSH command,
- run it or copy the command.
Every action execution requires explicit confirmation. QuickSSH does not support disabling confirmation per action. SCP profiles cannot run remote actions.
Action names can be added, renamed, and removed under Manage actions. Action text must be a single line. Null bytes, line breaks, and recognizable private-key payload markers are rejected.
QuickSSH executes user-provided remote commands as entered. Review every command and never store passwords, tokens, private keys, or other secrets in an action.
QuickSSH stores key aliases and file metadata, never private-key content.
Saved key lists identify private and public keys from file content using distinct icons and text labels. Rename and remove views preserve the key type while adding an operation-specific indicator. Missing or unrecognized key files are shown as a fail-closed error state.
Available operations include:
- register an existing private key,
- generate an Ed25519 or RSA 4096 keypair,
- scan
~/.sshfor existing private keys, - rename or remove a saved alias,
- copy a private-key path,
- copy public-key content,
- install a public key on a remote Linux host.
Generated keypairs are created non-interactively without a passphrase. QuickSSH verifies that both private and public files exist before registering the new key.
Removing a saved key removes only the QuickSSH entry. The key files remain unchanged.
Public-key installation appends the key to ~/.ssh/authorized_keys only when it is not already present. It does not transmit private-key content and does not modify sshd_config.
QuickSSH uses cmd.exe when no custom shell is selected. You can register and select another executable, including optional arguments:
ssh shell add PowerShell pwsh.exe -NoLogo
ssh shell add GitBash "C:\Program Files\Git\bin\bash.exe" --login -i -c
ssh shell add WSL wsl.exe --
ssh shell manage
Quoted executable paths are supported.
A selected custom shell is exclusive. When its definition is invalid, the executable is missing, or startup fails, QuickSSH shows an error and does not retry the command through cmd.exe or another shell. Deselect the custom shell to return to the default.
ssh config imports supported hosts from ~/.ssh/config.
Supported fields include:
HostNameUserPortIdentityFileIdentitiesOnlyLocalForwardRemoteForwardDynamicForwardProxyJumpProxyCommand
Wildcard entries such as Host * are skipped. Existing profile names are preserved.
QuickSSH stores profiles.json in the Flow Launcher plugin settings directory. The database contains:
- SSH/SCP profiles,
- reusable actions,
- custom shells and the selected shell,
- SSH key aliases and metadata.
Installed and portable Flow Launcher environments therefore keep QuickSSH data in their own settings tree. When the new database does not yet exist, QuickSSH can copy a legacy ~/.ssh/profiles.json once into the active plugin settings directory.
Database writes are atomic. Export and import files are stored in the plugin's data directory.
- Bare
sshshows Profiles, Actions, Tools, and Help. - Tools groups SSH keys, shell selection, and SSH config import.
- Direct expert commands such as
ssh keys,ssh shell, andssh configremain available. - Saved profiles and actions can be filtered by name or displayed text.
- Search is accent-insensitive and supports fuzzy matching.
- Every submenu starts with a Back row.
- Menu icons use consistent semantics: green for saved/run/add operations, orange for rename/edit, red for remove/errors, and blue for navigation or neutral operations.
Profiles
| Command | Purpose |
|---|---|
ssh profiles [filter] |
Browse or filter saved profiles |
ssh profiles add |
Open guided profile creation |
ssh profiles manage |
Open profile management |
ssh profiles rename |
Rename a profile |
ssh profiles copy |
Copy a generated SSH/SCP command |
ssh profiles export |
Export profiles to .sshconfig |
ssh profiles import |
Import .sshconfig or legacy .json profiles |
ssh profiles remove |
Select and confirm profile removal |
Actions
| Command | Purpose |
|---|---|
ssh actions [filter] |
Browse or filter saved actions |
ssh actions add |
Save a new single-line remote command |
ssh actions manage |
Open action management |
ssh actions rename |
Rename an action |
ssh actions remove |
Select and confirm action removal |
ssh actions run |
Compatibility route: profile first, then action |
SSH keys
| Command | Purpose |
|---|---|
ssh keys |
Browse saved keys and key operations |
ssh keys install |
Install a selected public key remotely |
ssh keys manage |
Open key management |
ssh keys add |
Register an existing private key |
ssh keys generate |
Generate and register a new keypair |
ssh keys scan |
Find private-key candidates in ~/.ssh |
ssh keys rename |
Rename a key alias |
ssh keys copy-path |
Copy a private-key path |
ssh keys copy-pub |
Copy public-key content |
ssh keys remove |
Remove only the saved alias |
Shell and tools
| Command | Purpose |
|---|---|
ssh tools |
Open keys, shell, and configuration tools |
ssh shell |
Select a saved shell |
ssh shell manage |
Open shell management |
ssh shell add |
Register a shell executable and optional arguments |
ssh shell remove |
Remove a saved shell entry |
ssh config |
Import ~/.ssh/config |
ssh help |
Open documentation |
- English
- German
- Spanish
- French
- Polish
- Russian
- Slovak
Flow Launcher selects the matching interface language from the current locale.
Install the Windows OpenSSH Client optional feature and confirm that ssh.exe is available in PATH.
QuickSSH accepts only existing files recognized as private SSH keys. Select the corresponding private key rather than a .pub file.
Verify the executable path and arguments. QuickSSH deliberately does not fall back to another shell after a selected-shell failure.
Place .sshconfig or legacy .json files in the QuickSSH plugin data directory, then reopen ssh profiles import.
Restart Flow Launcher so it reloads the plugin assets.
Issues and pull requests are welcome. User-facing behavior changes should include corresponding public README updates.
Every Pull Request must carry exactly one release outcome label: release:patch, release:minor, release:major, or skip-release. For same-repository PRs, the release preparation workflow derives the exact next strict SemVer version from the latest tag and updates only plugin.json when a release bump is required.
The build check is required on the current PR SHA. After a release PR is merged, a successful CI run on the exact main commit supplies the publish output to the release workflow. Publishing stops before creating anything when the version does not match the label or when the target tag or release already exists. A new release is first created as a draft, its ZIP hash, embedded manifest version, and tag-to-source binding are verified, and only then is it published as the latest release. Existing release assets are never clobbered.
QuickSSH is released under the MIT License.
QuickSSH was inspired by Melv1no/Flow.Launcher.Plugin.easyssh.


