Skip to main content

1. Generate a key (if you don’t have one)

macOS / Linux
Windows (PowerShell)
Accept the default location. Either skip the passphrase (faster) or set one (more secure — recommended for shared machines). The command creates two files:
  • ~/.ssh/id_ed25519 — your private key. Never share. Never paste anywhere.
  • ~/.ssh/id_ed25519.pub — your public key. Safe to share.

2. Add the public key

macOS
Linux (with xclip)
Windows PowerShell
Now in the dashboard: Settings → SSH keys → + Add key. Paste, give it a name (macbook-2026), save.

3. Connect to an instance

After launching a pod, the modal shows something like:
That line only carries the address — it doesn’t include your key, because we don’t know its filename on your machine. Connect with your private key (the one whose public half you added in step 2) using -i:
Confirm yes at the fingerprint prompt the first time.
Replace ~/.ssh/id_ed25519 with your own private-key path. If you created a dedicated key (e.g. ~/.ssh/gpuoutlet_ed25519), point -i at it:
You can omit -i only if the key you added is your default ~/.ssh/id_ed25519. Otherwise SSH offers the wrong key and you get Permission denied (publickey) — when in doubt, pass -i explicitly.

4. Save the connection in your SSH config

If you’ll reconnect often:
~/.ssh/config
Then just ssh gpu-rtx4090. StrictHostKeyChecking no + the /dev/null known_hosts trick is reasonable here because every rental gets a fresh IP and you’d otherwise build up a giant known_hosts that you’d have to clear.

Troubleshooting

Your local key isn’t matching any of the keys you’ve added. Verify:
Should match the key you pasted in the dashboard. If it doesn’t, you may have multiple keys — pass -i explicitly:
Three causes:
  1. Pod still provisioning — wait until status says running in the dashboard
  2. Wrong port — every pod gets a random high port. Check the modal.
  3. Your firewall — corporate VPNs sometimes block outbound on non-standard ports. Test from a different network.
Pod’s SSH daemon isn’t up yet — happens during the last 5 seconds of provisioning. Wait, retry.
You probably deleted the key from the dashboard and launched a new pod. New pods only see the keys present at the moment of launch. Re-add the key, launch a fresh pod.
Either use -i ~/.ssh/specific_key per-command or pin it in ~/.ssh/config per-host (see above).

Copying files

Local → pod (entire folder)
Pod → local (single file)
Pod → S3 (from inside the pod)

Port forwarding (Jupyter, vLLM web UI, etc.)

If you’re running Jupyter on port 8888 inside the pod and want it on localhost:8888 locally:
Then open http://localhost:8888 in your browser.