News icon

Kimi K3 is now available on Runpod

How to connect to your Pod with SSH (and move files with SCP and FileZilla)

Lost on how to connect to your pod with SSH? Start here.

How to connect to your Pod with SSH (and move files with SCP and FileZilla)

Imagine that you’ve just spun up your first GPU on Runpod, and now you want to work on it the way you'd work on any server by opening a terminal and uploading your fdataset. This guide walks you through the whole process from scratch. You'll create an SSH key, add it to your Runpod account, connect to a Pod, and then transfer files using SCP from the command line or FileZilla if you prefer a drag-and-drop window.

This doesn’t require any Runpod experience, and in fact this walkthrough is tuned for new users that might not have any. If you’re looking for a quick start guide, this is the place to look.

A quick primer: what you're connecting to

On Runpod, the machine you rent is called a Pod. A Pod is a container running on a GPU machine in one of Runpod's datacenters, and you can treat it much like a remote Linux server. When you create a Pod, you choose a template, which is a pre-configured container image. Official templates like Runpod PyTorch come with everything needed for SSH already set up, so this guide assumes you're using one of those.

SSH (Secure Shell) is the standard way to log into a remote machine securely. Instead of a password, Runpod uses key pairs. You keep a private key on your computer and give Runpod the matching public key. When you connect, the two are checked against each other. If they match, you're in.

Step 1: Generate an SSH key on your computer

If you've used SSH before, you may already have a key at ~/.ssh/id_ed25519.pub. If so, skip to Step 2.

Otherwise, open a terminal. That's Terminal on macOS, your usual shell on Linux, or PowerShell on Windows. Then run this command, swapping in your email:

ssh-keygen -t ed25519 -C "[email protected]"

Press Enter to accept the default location. You'll be asked for an optional passphrase. A passphrase adds an extra layer of protection if someone ever gets hold of your laptop, but you can leave it blank to keep things simple.

This creates two files. The private key is ~/.ssh/id_ed25519, and you should never share it with anyone. The public key is ~/.ssh/id_ed25519.pub, which is safe to share. On Windows, these live in C:\Users\YOUR_USERNAME\.ssh\.

Step 2: Add your public key to Runpod

Print your public key so you can copy it:

❯ cat ~/.ssh/id_ed25519.pub
 File: /Users/brendanmckeag/.ssh/id_ed25519.pub
─────┼─────────────────────────────────────────────────────────────────────────────────
   1 │ ssh-ed25519 AAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjXRExG
     │  [email protected]

You'll see a single line starting with ssh-ed25519 and ending with your email. Copy the entire line.

In the Runpod console, open Credentials, find the SSH Public Keys field, paste your key, and save. Runpod automatically adds this key to Pods you create from now on.

Be careful to copy the key itself and not its fingerprint. A fingerprint starts with SHA256:. Pasting a fingerprint by mistake is the most common reason connections fail. Also be sure to remove any extra white space or formatting.

Step 3: Deploy a Pod with a public IP

From the Pods page in the console, click Deploy, pick a GPU, and choose an official template such as Runpod PyTorch. Make sure the Pod supports a public IP. Full SSH, which is required for SCP and FileZilla, needs one.

Official templates expose TCP port 22 for SSH by default. If you later build your own custom template, you'll need to expose TCP port 22 and start an SSH server inside the container yourself. Runpod's docs include a ready-made start command for this.

Deploy the Pod and wait for it to show as running.

Step 4: Connect over SSH

Click your Pod and open the Connect tab. You'll see two SSH options, and the difference between them matters.

The first option is Basic SSH, which routes through ssh.runpod.io. It works with almost any Pod and is fine for running quick commands. It does not support SCP or SFTP, so it won't work for file transfers.

The second option is SSH over exposed TCP. This is a direct connection to your Pod's public IP. It gives you full SSH, including SCP and SFTP. This is the one you want.

The command will look something like this:

ssh root@213.192.6.97 -p 40180 -i ~/.ssh/id_ed25519

If it asks for a password

Runpod never uses passwords for SSH. A password prompt means your key isn't being accepted. The usual causes are pasting the fingerprint instead of the public key, or adding your key after the Pod was created, since keys apply to new Pods. Other causes are pointing -i at the wrong file, or accidentally using id_ed25519.pub instead of the private key. Fix the issue, and if you added the key late, deploy a fresh Pod.

Step 5: Transfer files with SCP

SCP (Secure Copy) comes built into macOS, Linux, and modern Windows. It uses the same IP, port, and key as your SSH command. Run these commands from your local terminal, not from inside the Pod.

One detail trips everyone up: SSH uses lowercase -p for the port, but SCP uses uppercase -P.

To upload a file from your computer to the Pod:

To upload an entire folder, add -r:

scp -r -P 17445 -i ~/.ssh/id_ed25519 ./my_project root@213.173.108.12:/workspace/

To download a file from the Pod to your current local folder, swap the order:

scp -P 17445 -i ~/.ssh/id_ed25519 root@213.173.108.12:/workspace/model.safetensors ./

The pattern is always scp [options] SOURCE DESTINATION. The remote side is written as root@IP:/path.

Step 6: Transfer files with FileZilla

If you'd rather browse and drag files around, FileZilla is a free graphical client that speaks SFTP, the file-transfer protocol that runs over SSH.

Download and install the FileZilla Client from filezilla-project.org. Then open File and then Site Manager and click New Site. Fill in the fields using the details from your Pod's SSH over exposed TCP command:

  • Protocol: SFTP (SSH File Transfer Protocol)
  • Host: your Pod's IP (e.g. 213.173.108.12)
  • Port: your Pod's SSH port (e.g. 17445)
  • Logon Type: Key file
  • User: root
  • Key file: browse to your private key, id_ed25519 (not the .pub file)

Finding the .ssh folder in the file browser can be tricky because it's hidden by default. On macOS, press Cmd + Shift + . in the file dialog to reveal hidden folders. On Windows, go to C:\Users\YOUR_USERNAME\.ssh. If FileZilla offers to convert your key to its own format, accept. It saves a converted copy and leaves your original untouched.

Click Connect and accept the host key prompt the first time. Your local files will appear on the left and your Pod's files on the right. Navigate to /workspace on the right side, then drag files in either direction. FileZilla saves the site, so reconnecting later is one click. Just remember to update the IP and port if you deploy a new Pod, since each Pod gets its own.

Wrapping up

That's the full workflow. You generated a key once, added it to Runpod once, and now every new Pod is a single SSH command away. For file transfers, SCP is quick for one-off copies and easy to script, while FileZilla is friendlier when you're browsing or moving many files by hand. Both rely on the same three details: the IP, the port, and your private key.

From here, you might explore connecting VS Code or Cursor to your Pod over the same SSH connection. Another option is runpodctl, Runpod's command-line tool, which can move files between machines without any SSH setup.  

‍

Build what’s next.

Build, train, and scale AI workloads on Runpod with cloud GPUs, Serverless, and Clusters.

Star field background