Inbound SSH to saltierpoop: humans and agents¶
Saltierpoop (192.168.6.243, user someone) is a Saltbox VM. Homelab Ansible
manages OS layer only; container operations use Saltbox (sb install, inventory).
Related: infra-services-inbound-ssh-humans-and-agents.md, ssh-keys-and-infra-services.md.
Three access paths¶
| Who | Command | Key | Notes |
|---|---|---|---|
| You (interactive) | ssh saltierpoop |
~/.ssh/id_rsa_saltedpoop (or 1Password) |
May prompt for passphrase |
| Cursor / agents (direct) | ssh saltierpoop-cursor |
~/.ssh/cursor-infra |
Same key as infra-services-cursor |
| C&C from infra-services | sudo ssh -i /etc/homelab/patch-controller/id_ed25519 someone@192.168.6.243 |
patch-controller (root-readable) | Restricted to from="192.168.6.17" on server |
Patch-controller and backup-fetch keys are installed by ansible-pull (site.yml
saltbox-hostrole). They only work from infra-services, not from your laptop.
Workstation SSH config¶
Add alongside infra-services-cursor:
Host saltierpoop-cursor
HostName 192.168.6.243
User someone
IdentityFile ~/.ssh/cursor-infra
IdentitiesOnly yes
IdentityAgent none
Human alias (existing):
Authorize the agent key (one-time)¶
The cursor-infra public key must be in /home/someone/.ssh/authorized_keys.
Option A — from infra-services (patch-controller already trusted):
# On your workstation — pipe pubkey through C&C jump
type %USERPROFILE%\.ssh\cursor-infra.pub | ssh infra-services-cursor \
"sudo ssh -i /etc/homelab/patch-controller/id_ed25519 someone@192.168.6.243 \
'mkdir -p .ssh && chmod 700 .ssh && cat >> .ssh/authorized_keys && chmod 600 .ssh/authorized_keys'"
Option B — while logged in as you (ssh saltierpoop):
Do not commit the pubkey to git; it is operator-local (same pattern as infra-services).
Verification¶
| # | Where | Command | Expect |
|---|---|---|---|
| 1 | Cursor terminal | ssh -o BatchMode=yes saltierpoop-cursor 'echo ok' |
ok |
| 2 | infra-services | sudo ssh -i /etc/homelab/patch-controller/id_ed25519 someone@192.168.6.243 hostname |
VM hostname |
Troubleshooting¶
Hangs from Windows with ssh saltierpoop¶
The personal key (id_rsa_saltedpoop) likely has a passphrase and Cursor
cannot prompt. Use saltierpoop-cursor for agents, or IdentityAgent none
on a dedicated Host stanza.
Permission denied from infra-services without sudo¶
The patch-controller private key is 0400 root:root under
/etc/homelab/patch-controller/. Always use sudo ssh -i ….
Fallback: Proxmox guest agent¶
If SSH is broken but VM 100 is running on prox:
# From infra-services
sudo ssh -i /etc/homelab/patch-controller/id_ed25519 root@192.168.6.71 \
qm guest exec 100 -- docker ps
Read-only emergency access only — prefer fixing SSH.
Agent convention¶
From Cursor, prefer:
For patching orchestration, infra-services uses patch-controller (already wired in coordinated-os-patching.md).