-
Notifications
You must be signed in to change notification settings - Fork 35
Open
Description
Currently we manually handle SSH config merging, but this requires re-implementing SSH's "first match wins" override behavior ourselves.
Proposed approach
Instead of manual merging, let the SSH client handle it natively:
- Place
overrideconfigs first in the file (SSH uses "first match wins") - Keys without values (for non-accumulating options) can be used to remove the entry if we still want to maintain that behavior
- For accumulating options, pass entries as-is from both configs without combining them
This keeps files leaner while avoiding custom override logic.
Accumulating SSH options to support
These options accumulate across multiple declarations rather than following "first match wins":
| Option | Behavior |
|---|---|
IdentityFile |
Tried in sequence |
CertificateFile |
Tried in sequence |
SetEnv |
All values sent to server |
SendEnv |
Accumulates (prefix with - to clear) |
LocalForward |
Multiple tunnels |
RemoteForward |
Multiple tunnels |
DynamicForward |
Multiple SOCKS proxies |
Additionally, these use space-separated values: GlobalKnownHostsFile, UserKnownHostsFile, PermitRemoteOpen, CanonicalDomains.
Reference
Metadata
Metadata
Assignees
Labels
No labels