Repository navigation
docs(playground): make gandalf's SSH keys-only, and check it every session - #1498
Merged
Merged
Conversation
…ssion The Proxmox installer leaves sshd taking root's password, and on gandalf only the unwatched host firewall keeps that off VLAN 30. §4 gains a step that writes /etc/ssh/sshd_config.d/10-keys-only.conf and proves from Hicks that a password is refused and a key still works; §7's per-session read-back checks it. Root's password stays for 8006 and the console. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
The rollback instructions use an SSH command that exits immediately, leaving no retained session for recovery if new logins fail after the reload.
1 open issue
What changed in this PR
This documentation-only PR adds a keys-only SSH procedure for gandalf, strengthening the playground isolation host’s defenses if its firewall is disabled. The change has not yet been applied to the host.
Changes:
- Documents the SSH configuration drop-in, reload, login checks, and rollback procedure.
- Adds SSH configuration checks to the per-session checklist.
- Records the audit and planned hardening in the changelog.
| File | Description |
|---|---|
| docs/runbooks/build-the-playground.md | Adds keys-only SSH setup and per-session verification. |
| docs/changelog.md | Records the audit, runbook changes, and pending deployment. |
Review effort: Balanced
Gerrrt
enabled auto-merge (squash)
November 14, 2026 06:39
…ys-only # Conflicts: # docs/changelog.md
The step told the operator to confirm key login with `ssh ... true`, which runs and disconnects, so there was no kept session to roll back from. Open an interactive key-only shell instead, make the change in it, and run the login checks from a second terminal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

What changed
build-the-playground.md§4 gains SSH ongandalf: keys only. The step writes/etc/ssh/sshd_config.d/10-keys-only.conf(PermitRootLogin prohibit-password,PasswordAuthentication no,KbdInteractiveAuthentication no), reloadssshd, and proves from Hicks that a password login is refused and a key login still works. §7's per-session read-back now checks it too. The changelog records it.Why
A read-only audit of
gandalfon 2026-11-13 foundsshdtaking root's password (permitrootlogin yes,passwordauthentication yes). That is the Proxmox installer's default, and the repository never said otherwise. The host firewall limits22to10.0.50.0/24, but ADR-0017 givesgandalfno agent, so nothing would notice that firewall going off. If it did, the root password would be the only thing between VLAN 30, where the attack VM is, and a root shell on the range's isolation host.Blast radius
gandalf's SSH only, and only once the step is run there. The risk is locking out root SSH. The step keeps a key session open across the change, and the console on KVM port 4 is the fallback. Root's password stays set, so theroot@pamlogin on8006and the console are unchanged.phoenixdrivesgandalfthrough the API token on8006, not SSH.secrets/*.sops.yamlVerification
make validate: all checks passed, 46 skipped for want of docker here, including markdownlint and editorconfig-checker. CI is their first run.On
gandalf, read-only:/etc/ssh/sshd_confighasInclude /etc/ssh/sshd_config.d/*.confon line 12, abovePermitRootLogin yeson line 33, so the drop-in's value wins. Root'sauthorized_keysholds the operator's ed25519 key.Not yet applied on
gandalf.make validatepasses (with the skips above)Deployed to the lab and confirmed working
Docs updated (
docs/, service README, ordocs/roadmap.md)Not covered:
Saruman'ssshd, which I could not read from here. It likely has the same installer default.🤖 Generated with Claude Code