Docs
DocsRemote DevelopmentSSH Connections

SSH Connections

Manage reusable SSH connections, local SSH config aliases, proxying and agent forwarding

SSH connections are reusable connection profiles for remote development in Emdash. Remote projects use them to reach persistent servers.

You can create and manage SSH connections from Settings → Connections.

Configure Manually

Enter a name for the connection and provide Host, Port and Username.

Supported authentication methods are:

  • Password stores the password in encrypted app storage.
  • SSH Key reads the private key from the path you provide. If you enter a passphrase, Emdash stores it in encrypted app storage.
  • Agent uses the SSH agent socket available to the Emdash process. If SSH config resolves an IdentityAgent for the host, Emdash uses that socket. Otherwise it falls back to SSH_AUTH_SOCK.

Advanced options:

  • ProxyJump connects through one or more jump hosts.
  • ForwardAgent forwards your local SSH agent to the remote host.

Select From SSH Config

If you already connect using ssh <alias>, you can select that alias instead of copying every field into the form.

Emdash reads your local ~/.ssh/config, follows Include directives and shows the concrete Host aliases in the SSH Config selector.

When you select an alias, Emdash saves the alias and runs ssh -G <alias>, then uses the host, port, username, authentication, proxy, forwarding, timeout and keepalive settings OpenSSH resolves for that alias to connect.

Selecting an alias fills and locks the resolved fields in the form. To change those values, update your SSH config and select the alias again.

Authentication Resolution

For key authentication, Emdash uses the manual private key path when one is configured. For SSH config aliases, it can use the first resolved IdentityFile.

For agent authentication, Emdash resolves the agent socket from SSH config first. IdentityAgent none disables agent authentication for that alias. If no IdentityAgent is resolved, Emdash uses SSH_AUTH_SOCK.

When IdentitiesOnly is enabled with agent authentication, Emdash only offers the agent identities that match the resolved IdentityFile keys.

Proxying And ForwardAgent

Manual connections support ProxyJump and ForwardAgent. SSH config aliases support ProxyJump, ProxyCommand and ForwardAgent. If both ProxyCommand and ProxyJump resolve from SSH config, ProxyCommand takes precedence.

Proxy helpers run on the local machine running Emdash. A ProxyCommand that calls a helper such as cloudflared requires that helper to be installed locally.

ProxyJump uses the local ssh command with -W to reach the final destination. Multiple jump hosts are supported with comma-separated ProxyJump values, such as bastion-a,bastion-b.

ProxyCommand supports the OpenSSH tokens %h, %p, %r, %n, and %%. Unsupported percent tokens are stripped before the command runs.

When ForwardAgent is enabled, Emdash forwards the resolved agent socket. If the forwarded agent and the authentication agent resolve to different sockets, Emdash stops instead of opening an ambiguous connection.

Supported SSH Config Directives

Emdash resolves these SSH config directives:

  • Destination: Host, HostName, User, Port
  • Authentication: IdentityFile, IdentityAgent, IdentitiesOnly
  • Proxying: ProxyJump, ProxyCommand
  • Agent forwarding: ForwardAgent
  • Timeouts and keepalive: ConnectTimeout, ServerAliveInterval, ServerAliveCountMax

Other SSH config directives may still affect helper commands run by OpenSSH, such as the local ssh command used for ProxyJump, but they are not directly mapped into Emdash's SSH client.

Local Requirements

The machine running Emdash needs:

  • Local ssh for SSH config aliases and ProxyJump.
  • Local helper commands required by your ProxyCommand.
  • A local SSH agent socket for agent authentication or ForwardAgent.

The remote host still needs an SSH server and whatever credentials, Git setup and development tools your remote project requires.

Last updated on June 30, 2026