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
IdentityAgentfor the host, Emdash uses that socket. Otherwise it falls back toSSH_AUTH_SOCK.
Advanced options:
ProxyJumpconnects through one or more jump hosts.ForwardAgentforwards 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
sshfor SSH config aliases andProxyJump. - 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.