coder / coder/vscode-coder

Support all accumulating SSH config options instead of re-implementing override behavior

Đang mở
#695 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
TypeScript
Star
130
Fork
48
Merge trung bình
3 ngày 3 giờ
Pull request đã merge (30 ngày)
15

Mô tả

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 `override` configs 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

[OpenBSD ssh_config(5)](https://man.openbsd.org/ssh_config.5)

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.