Connect: terminal, SSH, Jupyter, VS Code

Every way into your container, when to use which, how to make and add SSH keys, and the exact commands for Windows, macOS and Linux.

All of these reach the same container and the same /workspace. Pick by task:

UseWhen
Browser terminalRight now, no setup. Installs, quick edits, checking the GPU.
SSHLong sessions, tmux, your own dotfiles, file transfer (scp, rsync, SFTP).
JupyterLabNotebooks, a file browser with drag-and-drop upload/download, a terminal tab.
VS CodeReal editing on the remote box with extensions, debugger, Git UI.
Web UIsComfyUI, SD WebUI, Gradio, TensorBoard… open from the Ports tab when they report ready.

Browser terminal (no SSH key)

On a running rental click Terminal (rental page header, or the first tab of the Connect dialog). You get a root shell inside the container through the FairGPU relay.

  • Copy: select text, then Ctrl+Shift+C (or the copy button). Paste: Ctrl+Shift+V (or the paste button). Plain Ctrl+C still interrupts the running program.
  • Up to 4 terminals per rental; a session closes after 30 minutes without input. Reconnect opens a new shell; the previous one's processes are gone unless you used tmux or nohup.
  • Typing counts as activity for idle auto-stop.
  • If you see This host runs an older agent; use SSH, the host has not updated yet: use the SSH tab.

SSH

1. Make a key (once)

Windows

Windows 10 and 11 ship ssh and ssh-keygen. Open PowerShell (no admin needed):

ssh-keygen -t ed25519 -C "fairgpu"
# press Enter for the default path (C:\Users\you\.ssh\id_ed25519); a passphrase is optional
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard   # copies the PUBLIC key

macOS

Open Terminal:

ssh-keygen -t ed25519 -C "fairgpu"
# press Enter for the default path (~/.ssh/id_ed25519); a passphrase is optional
cat ~/.ssh/id_ed25519.pub | pbcopy    # copies the PUBLIC key

Linux

ssh-keygen -t ed25519 -C "fairgpu"
# press Enter for the default path (~/.ssh/id_ed25519); a passphrase is optional
cat ~/.ssh/id_ed25519.pub            # the single line starting with ssh-ed25519 is the PUBLIC key

Paste the public key under Account → SSH keys with a name (Laptop, Work PC…). You can keep several; the rent wizard lets you pick which ones to inject. Never upload the file without .pub: that is the private key.

2. Connect

The Connect dialog shows the exact command for your rental, for example ssh -p 30123 [email protected], plus the pieces:

Address[email protected] -p 30123
SFTPsftp -P 30123 [email protected]
WinSCPsftp://[email protected]:30123/workspace
FingerprintSHA256:… of the container's host key

Windows

ssh -p 30123 [email protected]
# first time: type "yes" at the host-key prompt. If it picks the wrong key: ssh -i $env:USERPROFILE\.ssh\id_ed25519 -p 30123 [email protected]

macOS

ssh -p 30123 [email protected]
# wrong key offered? ssh -i ~/.ssh/id_ed25519 -p 30123 [email protected]

Linux

ssh -p 30123 [email protected]
# wrong key offered? ssh -i ~/.ssh/id_ed25519 -p 30123 [email protected]

The port is different for every rental. The relay host stays the same, so a REMOTE HOST IDENTIFICATION HAS CHANGED warning on a new rental is expected; compare the fingerprint shown in the dialog if you want to be sure.

3. Add a key to a running pod

Forgot to add your laptop's key, or connecting from a second computer? In the SSH tab click Add a key to this pod, paste the public key, done: it is appended to /root/.ssh/authorized_keys immediately, and optionally saved to your account for next time. You can also do it from the browser terminal:

mkdir -p /root/.ssh && chmod 700 /root/.ssh
printf '%s\n' 'ssh-ed25519 AAAA... you@laptop' >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

JupyterLab

Click Open JupyterLab in the Connect dialog; the token is in the link. The left pane is a file browser: drag files onto it to upload, right-click to download. File → New → Terminal is another shell.

Port 8888 goes through the relay in plain HTTP. For an encrypted path, tunnel it:

ssh -N -L 8888:localhost:8888 -p 30123 [email protected]
# then open http://localhost:8888 and paste the token from the dialog

VS Code (and Cursor)

  1. Install the Remote - SSH extension.
  2. Copy the ~/.ssh/config block from the VS Code tab into your SSH config file:

Windows

%USERPROFILE%\.ssh\config (create it if missing, no extension). Then in VS Code: Remote-SSH: Connect to Host… → pick the alias → open /workspace.

macOS

~/.ssh/config. Then Remote-SSH: Connect to Host… → pick the alias → open /workspace.

Linux

~/.ssh/config. Then Remote-SSH: Connect to Host… → pick the alias → open /workspace.

Or run the one-liner shown there (code --remote ssh-remote+root@relay:30123 /workspace). The first connection installs the VS Code server inside the container; it lands in /root/.vscode-server, which is outside /workspace, so it is re-downloaded on a fresh container unless you save an environment image.

Web UIs and other ports

The Ports tab lists every exposed port with its relay address and a readiness dot. HTTP ports get a browser link when the server's HTTPS proxy is on; otherwise tunnel them like Jupyter: ssh -L 8188:localhost:8188 -p <port> root@<relay> and open http://localhost:8188.

Something refuses to connect?

See Troubleshooting: connection refused, key rejected, "host key changed", slow pulls.

All guides