Skip to content

SSH Config Autocomplete

Quickly create tunnels from your existing SSH config hosts.


Overview

StormTunnel reads your ~/.ssh/config file and lets you select hosts directly when creating tunnels. This saves time and ensures consistency with your existing SSH setup.

Feature Description
Host Selection Pick from saved SSH hosts in a dropdown menu
Auto-populate Fill tunnel fields automatically from config
Key Matching Link identity files to imported keys
Port Forwarding Import LocalForward settings from config

Using SSH Config Hosts

Creating a Tunnel from SSH Config

  1. Click Add Tunnel (or Cmd+N)
  2. In the Name field, click the server icon button
  3. Select a host from the dropdown menu
  4. Fields are automatically populated from your SSH config

What Gets Populated

When you select an SSH config host, StormTunnel fills in:

Field Source in SSH Config
Tunnel Name Host alias
Tunnel Type Set to SSH
SSH Hostname Host alias (SSH resolves)
Username User directive
SSH Port Port directive
Local Port LocalForward (local)
Remote Host LocalForward (remote)
Remote Port LocalForward (port)
SSH Key IdentityFile (matched)

SSH Config Format

StormTunnel supports standard SSH config directives:

Host my-server
    HostName 192.168.1.100
    User admin
    Port 2222
    IdentityFile ~/.ssh/my-key
    LocalForward 8080 localhost:80

Supported Directives

Directive Description
Host Alias name (appears in dropdown)
HostName Actual server address
User SSH username
Port SSH port (default: 22)
IdentityFile Path to SSH private key
LocalForward Port forwarding configuration

Wildcard Patterns

Hosts with wildcard patterns (*, ?) are excluded from the dropdown since they don't represent specific servers:

# These appear in the dropdown
Host production-db
Host staging-api

# These are excluded (wildcards)
Host *
Host *.example.com

Keyboard Navigation

When the suggestion popover appears:

Key Action
Down Move to next suggestion
Up Move to previous
Enter Select highlighted host
Esc Close suggestions

Identity File Matching

If your SSH config specifies an IdentityFile, StormTunnel attempts to match it with your imported SSH keys:

  1. StormTunnel reads the IdentityFile path from config
  2. Searches imported keys for a matching file path
  3. If found, automatically selects that key for authentication

Import Keys First

For automatic key matching to work, import your SSH keys via SSH Key Management (Cmd+K) before creating tunnels.


Troubleshooting

No Hosts in Dropdown

  1. Check config location: StormTunnel reads ~/.ssh/config
  2. Verify file permissions: Config must be readable
  3. Check syntax: Ensure valid SSH config format
  4. Restart app: Changes require app restart to reload

Host Not Appearing

  1. Check for wildcards: Hosts with * or ? are excluded
  2. Verify Host line: Must have Host alias format
  3. Check for duplicates: Each alias must be unique

Fields Not Populating

  1. Check directive spelling: Case-insensitive but must be valid
  2. Verify directive format: Key value with space separator
  3. Check for comments: Lines starting with # are ignored

Identity File Not Matching

  1. Import the key first: Use SSH Key Management
  2. Check path match: Paths must match exactly
  3. Expand tildes: ~/.ssh/key expands to full path

Best Practices

  • Organize SSH config: Use descriptive Host aliases
  • Import keys first: Enable automatic key matching
  • Use LocalForward: Pre-configure port forwarding in SSH config
  • Keep config updated: StormTunnel reads on app launch

Example SSH Config

# Development server
Host dev
    HostName dev.example.com
    User developer
    IdentityFile ~/.ssh/dev-key

# Production database tunnel
Host prod-db
    HostName bastion.example.com
    User admin
    Port 2222
    IdentityFile ~/.ssh/prod-key
    LocalForward 5432 db.internal:5432

# Staging API
Host staging-api
    HostName staging.example.com
    User deploy
    LocalForward 8080 localhost:3000