LAN-access: fix Include scope + read-only ControlPath, add ssh-lan.conf & RFC1918 autojump
Validate / docs-check (push) Successful in 6s
Validate / base-change-warning (push) Successful in 11s
Validate / validate-omos (push) Successful in 4m25s
Validate / validate-base (push) Successful in 5m21s
Validate / validate-omos-with-pi (push) Successful in 5m24s
Publish Docker Image / base-decide (push) Successful in 9s
Publish Docker Image / resolve-versions (push) Successful in 4s
Validate / validate-with-pi (push) Successful in 10m42s
Validate / validate-pi-only (push) Successful in 5m51s
Publish Docker Image / build-base (push) Successful in 30m30s
Publish Docker Image / smoke-base (push) Successful in 3m31s
Publish Docker Image / smoke-with-pi (push) Successful in 7m7s
Publish Docker Image / smoke-pi-only (push) Successful in 3m50s
Publish Docker Image / smoke-omos-with-pi (push) Successful in 5m20s
Publish Docker Image / smoke-omos (push) Successful in 12m4s
Publish Docker Image / build-variant-base (push) Successful in 15m56s
Publish Docker Image / build-variant-pi-only (push) Successful in 16m6s
Publish Docker Image / build-variant-with-pi (push) Successful in 17m56s
Publish Docker Image / build-variant-omos (push) Successful in 22m32s
Publish Docker Image / build-variant-omos-with-pi (push) Successful in 33m41s
Publish Docker Image / update-description (push) Successful in 9s
Publish Docker Image / promote-base-latest (push) Successful in 13s
Validate / docs-check (push) Successful in 6s
Validate / base-change-warning (push) Successful in 11s
Validate / validate-omos (push) Successful in 4m25s
Validate / validate-base (push) Successful in 5m21s
Validate / validate-omos-with-pi (push) Successful in 5m24s
Publish Docker Image / base-decide (push) Successful in 9s
Publish Docker Image / resolve-versions (push) Successful in 4s
Validate / validate-with-pi (push) Successful in 10m42s
Validate / validate-pi-only (push) Successful in 5m51s
Publish Docker Image / build-base (push) Successful in 30m30s
Publish Docker Image / smoke-base (push) Successful in 3m31s
Publish Docker Image / smoke-with-pi (push) Successful in 7m7s
Publish Docker Image / smoke-pi-only (push) Successful in 3m50s
Publish Docker Image / smoke-omos-with-pi (push) Successful in 5m20s
Publish Docker Image / smoke-omos (push) Successful in 12m4s
Publish Docker Image / build-variant-base (push) Successful in 15m56s
Publish Docker Image / build-variant-pi-only (push) Successful in 16m6s
Publish Docker Image / build-variant-with-pi (push) Successful in 17m56s
Publish Docker Image / build-variant-omos (push) Successful in 22m32s
Publish Docker Image / build-variant-omos-with-pi (push) Successful in 33m41s
Publish Docker Image / update-description (push) Successful in 9s
Publish Docker Image / promote-base-latest (push) Successful in 13s
- Fix: Include ~/.ssh/config was scoped to the Host host/mac block, so dssh <peer> by name fell back to SSH defaults. Emit Host * scope reset before every Include. - Fix: redirect ControlPath to writable ~/.ssh-local sidecar (Mac config's ~/.ssh/cm path is read-only in the container, broke multiplexed hosts). - Add: Include host-owned ~/.config/devbox-shell/ssh-lan.conf for named-peer ProxyJump overrides (keeps image generic; peer names stay host-side). - Add: opt-in DEVBOX_LAN_AUTOJUMP_PRIVATE=1 RFC1918 catch-all for roaming. - Docs: README/.env.example/AGENTS/CHANGELOG + new ssh-lan.conf.example.
This commit is contained in:
+46
-1
@@ -8,7 +8,52 @@ Tags follow `v{opencode_version}[letter]` — bare tag for the first build on a
|
||||
|
||||
## Unreleased
|
||||
|
||||
_(no changes since v1.15.13c)_
|
||||
_(no changes since v1.15.13d)_
|
||||
|
||||
## v1.15.13d — 2026-06-04
|
||||
|
||||
LAN-access fixes + ergonomics. Letter-suffix rebuild on opencode `1.15.13`
|
||||
(version unchanged). Touches `setup-lan-access.sh`, which is in the base hash,
|
||||
so `base-latest` / `base-pi-only` advance and the fix propagates to `pi-devbox`.
|
||||
|
||||
### Fixed: LAN-access `Include` was scoped to the `host`/`mac` block (named peers ignored)
|
||||
|
||||
The generated `~/.ssh-local/config` placed `Include ~/.ssh/config` *inside* the
|
||||
`Host host mac` block. Because SSH scopes an `Include` to the enclosing
|
||||
`Host`/`Match` block, the user's `~/.ssh/config` was only consulted when
|
||||
targeting `host`/`mac` — so `dssh pve` / `dssh <peer>` by name silently fell
|
||||
back to SSH defaults (wrong user, unresolved hostname) and never applied the
|
||||
peer's settings or any `ProxyJump`. Fixed by emitting a bare `Host *` scope
|
||||
reset before every `Include`.
|
||||
|
||||
### Fixed: read-only `~/.ssh/cm` ControlPath broke multiplexed hosts
|
||||
|
||||
The bind-mounted `~/.ssh/config` commonly sets `ControlPath ~/.ssh/cm/...`
|
||||
(CGNAT flow-cap multiplexing), but `~/.ssh` is read-only in the container, so
|
||||
every `ControlMaster`-enabled host (e.g. `pmx-jh`, `proxmox*`, `synlig`) failed
|
||||
with `cannot bind to path … Read-only file system`. The generated config now
|
||||
sets `ControlPath ~/.ssh-local/cm/%r@%h:%p` in the top `Host *` block
|
||||
(first-value-wins) so master sockets land in the writable sidecar.
|
||||
|
||||
### Added: host-owned `ssh-lan.conf` for named-peer jump overrides
|
||||
|
||||
When the host bind-mounts `~/.config/devbox-shell/ssh-lan.conf`, the generated
|
||||
config now Includes it *before* `~/.ssh/config`. Put `ProxyJump host` overrides
|
||||
there (first-value-wins inherits HostName/User/IdentityFile from `~/.ssh/config`)
|
||||
instead of editing the shared `~/.ssh/config` — which would break the host's own
|
||||
direct access to those peers and is read-only from the container anyway. New
|
||||
[`ssh-lan.conf.example`](ssh-lan.conf.example).
|
||||
|
||||
### Added: `DEVBOX_LAN_AUTOJUMP_PRIVATE=1` opt-in RFC1918 auto-jump
|
||||
|
||||
Emits a catch-all that ProxyJumps any private (RFC1918) IP through the host, so
|
||||
bare `dssh user@<ip>` reaches whatever LAN the (roaming) host is currently on,
|
||||
without naming peers. Matches the typed address (not the resolved HostName), so
|
||||
named hosts carrying their own ProxyJump are unaffected; public IPs stay direct.
|
||||
|
||||
All three land in `rootfs/usr/local/lib/opencode-devbox/setup-lan-access.sh`,
|
||||
which is counted in the base hash → advances `base-latest` and propagates to
|
||||
`pi-devbox` (built `FROM` the base).
|
||||
|
||||
## v1.15.13c — 2026-06-03
|
||||
|
||||
|
||||
Reference in New Issue
Block a user