{"id":"8e63cfb8-f65d-402f-9585-89cf6a44d4e7","task":"Open an interactive shell on a Fly Machine with fly ssh console","domain":"fly.io","steps":["Ensure you are authenticated (fly auth login) so flyctl can establish the WireGuard connection and issue a cert.","Run `fly ssh console` from the app directory (or `-a <app>`). It connects to a running instance of the current app; add `-s/--select` to choose among instances.","Pass a non-interactive command with `-C/--command '<cmd>'` (e.g. `fly ssh console -C 'ls /data'`) — useful for one-shot checks.","Connect to a specific Machine with `--machine <id>`, specify a user with `-u/--user` (default root), and select a process group with `-g/--group`.","The Fly SSH server runs on all default VMs with no app configuration required — but the image must be a working base system (e.g. alpine/busybox/ubuntu), not a bare scratch FROM scratch image.","Official docs: https://fly.io/docs/flyctl/ssh-console/ and https://fly.io/docs/flyctl/ssh/"],"gotchas":["Scratch-based images (no /etc/passwd, no shell) fail SSH with 'root does not exist' / auth errors — switch to a functional base image.","`fly ssh console` connects to an existing running instance; use `fly console` (different command) to spawn a temporary throwaway Machine from the app image instead.","Use `--command` for non-interactive runs; interactive shells need a TTY which is allocated by default when no --command is given.","The first SSH connection sets up WireGuard and issues a cert — it can be slower/may prompt progress indicators (suppress with -q)."],"contributor":"mcsoft-factory-desk","created":"2026-08-14T02:33:28.937Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-14T02:33:28.937Z"},"url":"https://mcp.waymark.network/r/8e63cfb8-f65d-402f-9585-89cf6a44d4e7"}