IPXdocs
Guides

Connecting over SSH

Once your rental reaches active_connected, you get one connection string that lands you on your GPU as root. This page covers what that string means, how your key gets there, and how to move work in and out.

There is no provider login, no console, and no jump host to learn. The rented box dials home and opens a reverse tunnel to our gateway on a port allocated to you. You point your SSH client at that port on gpu.ipxtechholding.com, and you land on your machine. The provider's real address is never exposed, and the only hostname you ever type is ours.

Your connection string only appears once the rental is in active_connected. If you just rented, poll the rental until the connection_string field is populated. See Renting a GPU for the lifecycle and polling loop.

The connection string

Every rental exposes a connection_string in the console and in the API. It always has the same shape:

your connection string
# -p is the port allocated to your rental, not 22
# the host is always the IPX gateway
$ ssh -p 20137 root@gpu.ipxtechholding.com

Two parts matter, and only one of them changes between rentals:

  • The host is always gpu.ipxtechholding.com. This is the IPX gateway. You never connect to a provider IP, and you never need one. If you see any other hostname, it did not come from us.
  • The port (here 20137) is allocated to your rental. It is how the gateway routes you down the reverse tunnel to the right box. A different rental gets a different port. Always use the port from that rental's connection_string.

The default SSH port 22 will not reach your box. The gateway only routes the per-rental port from your connection string. If you drop -p, the connection will fail or land nowhere useful.

Add your SSH key first

We inject your public key into the box at boot. There are no passwords and no shared logins, so a box you rent without a registered key has nothing to authenticate against. Add your key before you rent.

Confirm you have a key locally

terminal
# list existing public keys
$ ls ~/.ssh/*.pub
# no output? generate one (ed25519 is a good default)
$ ssh-keygen -t ed25519 -C "you@example.com"
# print the public half to paste into IPX
$ cat ~/.ssh/id_ed25519.pub

Register the .pub file only. Your private key never leaves your machine. If a tool ever asks you to paste a key that does not start with ssh-ed25519 or ssh-rsa, stop.

Register it with IPX

Add the public key in Settings, or post it to the API with your bearer token. Create or rotate that token at Settings › API access and keep it in an environment variable.

bash
# token from Settings > API access
$ export IPX_TOKEN="your-token-here"

$ curl -X POST https://gpu.ipxtechholding.com/api/v1/ssh_keys \\
    -H "Authorization: Bearer $IPX_TOKEN" \\
    -H "Content-Type: application/json" \\
    -d "{\\"name\\":\\"laptop\\",\\"public_key\\":\\"$(cat ~/.ssh/id_ed25519.pub)\\"}"
response
{
  "id": 1,
  "name": "laptop",
  "fingerprint": "SHA256:Hk7...0aZ"
}

Compare that fingerprint against your local key to confirm you registered the right one:

terminal
$ ssh-keygen -lf ~/.ssh/id_ed25519.pub
# 256 SHA256:Hk7...0aZ you@example.com (ED25519)

You can register more than one key. Every key on file is injected at boot, so a key per machine means you can reach any box from any of them.

First connection

With a key on file and a rental in active_connected, copy the connection string and run it. The first time, your client will ask you to trust the gateway's host key.

  1. Run the connection string

    Paste it exactly as given, including the -p port.

    terminal
    $ ssh -p 20137 root@gpu.ipxtechholding.com
  2. Accept the gateway host key

    You connect to the IPX gateway, so the fingerprint you confirm is ours and stays the same across rentals. Type yes to add it to known_hosts.

    terminal
    # The authenticity of host '[gpu.ipxtechholding.com]:20137' can't be established.
    # ED25519 key fingerprint is SHA256:...
    # Are you sure you want to continue connecting (yes/no)? yes
  3. Confirm the GPU

    You land as root. Check the hardware before you start a long job.

    terminal
    root@gpu:~# nvidia-smi
    # +-----------------------------------------------------------------------------+
    # | NVIDIA-SMI 550.xx       Driver Version: 550.xx       CUDA Version: 12.4     |
    # |   0  NVIDIA A100-SXM4-80GB     On   |  00000000:00:1E.0 Off |        0      |
    # +-----------------------------------------------------------------------------+

If nvidia-smi lists the GPU you rented, the box is healthy and the meter is running. You are ready to work.

A couple of useful first commands

terminal
# how much disk you have to work with
root@gpu:~# df -h /
# CPU and memory on the box
root@gpu:~# nproc && free -h
# watch GPU utilization live while a job runs
root@gpu:~# watch -n1 nvidia-smi

Moving files in and out

Anything that speaks SSH works over the same allocated port. Pass the port the same way you do for ssh: scp uses an uppercase -P, and rsync passes it through -e.

scp for one-off copies

terminal
# NOTE: scp uses -P (uppercase), unlike ssh
# push a local file up to the box
$ scp -P 20137 ./model.tar.gz root@gpu.ipxtechholding.com:/root/
# pull a result back down
$ scp -P 20137 root@gpu.ipxtechholding.com:/root/output.pt ./
# copy a whole directory with -r
$ scp -P 20137 -r ./dataset root@gpu.ipxtechholding.com:/root/dataset

rsync for large or resumable transfers

For big datasets, checkpoints, or anything you might need to resume, rsync is the better tool. It only sends what changed and can pick up where it left off.

terminal
# the allocated port goes inside -e
# upload a dataset, resumable and progress-aware
$ rsync -avzP -e "ssh -p 20137" ./dataset/ root@gpu.ipxtechholding.com:/root/dataset/
# download checkpoints back when training finishes
$ rsync -avzP -e "ssh -p 20137" root@gpu.ipxtechholding.com:/root/checkpoints/ ./checkpoints/

The box is ephemeral. When you tear it down, its disk is gone. Treat /root as scratch space and rsync anything you want to keep back to your own storage before the meter stops.

Tunnel a port back to your laptop

Running a notebook or a web UI on the box? Forward its port over the same connection instead of opening anything on the box.

terminal
# reach a service on box port 8888 at localhost:8888
$ ssh -p 20137 -L 8888:localhost:8888 root@gpu.ipxtechholding.com

Tear it down when you are done

Billing is metered per second, with a one-minute minimum, from the moment the tunnel connects until teardown. Closing your SSH session does not stop the meter. The box keeps running, and you keep paying, until you terminate the rental.

bash
# terminate the rental and stop the meter
$ curl -X DELETE https://gpu.ipxtechholding.com/api/v1/rentals/RENTAL_ID \\
    -H "Authorization: Bearer $IPX_TOKEN"

Keep a box only as long as you actually need it. Per-second billing rewards short, deliberate sessions: connect, run the job, pull your results, terminate. If you might forget, set a hard spend cap when you rent and we reclaim the box the moment it is hit. See Billing & credits for caps and how the meter works.

Where to next