Permit tagged client physicals to SSH into user-owned devices #150

Closed
opened 2026-05-27 00:24:41 +00:00 by coilysiren · 0 comments
Owner

Problem

Kai SSHing from her Mac to kai-desktop-tower-wsl fails:

tailnet policy does not permit you to SSH to this node

Root cause: the Mac is tagged tag:physical, which drops it out of autogroup:member. The existing ssh rule src=autogroup:member, dst=autogroup:self therefore never matches when the Mac is the source. The tag:physical→tag:server rule covers Mac→kai-server but not Mac→any-other-user-owned-device. WSL itself is fine: untagged, owned by coilysiren@gmail.com.

Fix

Add one ssh rule to terraform/tailscale/main.tf:

{
  action = "accept"
  src    = ["tag:physical"]
  dst    = ["autogroup:member"]
  users  = ["autogroup:nonroot", "root"]
},

Tagged client physicals (Mac, tower, laptop) can then SSH into any user-owned device on the tailnet. Safe scope: autogroup:member is all human-account-owned devices, and Kai is the only user account on the tailnet.

Out of scope

The longer-term 2FA gate (TOTP via PAM, then YubiKey FIDO2) tracked by the prior SSH-jump session. That bootstrap depends on getting into WSL first, which is what this fix unblocks.

**Problem** Kai SSHing from her Mac to `kai-desktop-tower-wsl` fails: ``` tailnet policy does not permit you to SSH to this node ``` Root cause: the Mac is tagged `tag:physical`, which drops it out of `autogroup:member`. The existing ssh rule `src=autogroup:member, dst=autogroup:self` therefore never matches when the Mac is the source. The `tag:physical→tag:server` rule covers Mac→kai-server but not Mac→any-other-user-owned-device. WSL itself is fine: untagged, owned by `coilysiren@gmail.com`. **Fix** Add one ssh rule to `terraform/tailscale/main.tf`: ```hcl { action = "accept" src = ["tag:physical"] dst = ["autogroup:member"] users = ["autogroup:nonroot", "root"] }, ``` Tagged client physicals (Mac, tower, laptop) can then SSH into any user-owned device on the tailnet. Safe scope: `autogroup:member` is all human-account-owned devices, and Kai is the only user account on the tailnet. **Out of scope** The longer-term 2FA gate (TOTP via PAM, then YubiKey FIDO2) tracked by the prior SSH-jump session. That bootstrap depends on getting into WSL first, which is what this fix unblocks.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/infrastructure#150
No description provided.