Initial Login
Why SSH keys?
Section titled “Why SSH keys?”SSH keys are considerably more secure than passwords:
- They can’t be guessed or brute-forced. Servers on the public internet receive constant automated password-guessing attempts. A modern SSH key is far too long to guess, and with password login disabled those attacks have nothing to target.
- Your secret never leaves your computer. When you log in with a key, your computer proves it holds the private key without ever sending it to the server. A password, by contrast, is sent to the server every time you log in.
- No shared or emailed credentials. There is no generated root password to store, copy, or send around. Only someone holding your private key can log in.
- Easy to revoke. If a device is lost or a team member leaves, you remove their public key from the server without changing anyone else’s access.
- Convenient. Once set up, you log in without typing a password (optionally protecting the key itself with a passphrase).
An SSH key comes as a pair: a private key that stays on your computer and must never be shared, and a public key (ending in .pub) that you upload to the control panel and which is installed on your server.
Step 1: Generate an SSH key
Section titled “Step 1: Generate an SSH key”If you already have an SSH key pair you’d like to use, skip to Step 2. RSA and Ed25519 keys are supported; we recommend Ed25519.
-
Open a terminal and run:
Terminal window ssh-keygen -t ed25519 -C "you@example.com"The
-Ccomment is just a label to help you identify the key later. -
Press Enter to accept the default location (
~/.ssh/id_ed25519). -
Enter a passphrase when prompted. This is optional but strongly recommended, as it protects the key if your computer is ever compromised.
-
Display your public key so you can copy it:
Terminal window cat ~/.ssh/id_ed25519.pubIt will look similar to:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGq4... you@example.com
Windows 10 and 11 include the OpenSSH client by default.
-
Open PowerShell and run:
Terminal window ssh-keygen -t ed25519 -C "you@example.com" -
Press Enter to accept the default location (
C:\Users\<you>\.ssh\id_ed25519). -
Enter a passphrase when prompted (recommended).
-
Display your public key so you can copy it:
Terminal window Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
-
Open PuTTYgen (installed alongside PuTTY).
-
Select EdDSA (Ed25519) as the key type and click Generate, moving your mouse over the blank area as prompted.
-
Enter a Key passphrase (recommended).
-
Click Save private key and store the
.ppkfile somewhere safe. -
Copy the text from the box labelled Public key for pasting into OpenSSH authorized_keys file. This is the public key you will add to the control panel.
Step 2: Add your public key to the control panel
Section titled “Step 2: Add your public key to the control panel”Add your public key to your account so it can be selected when deploying a server. You can do this through the Console, API or CLI.
Then select the key in the SSH Key step when you deploy your SSD VPS.
Step 3: Find your server’s login details
Section titled “Step 3: Find your server’s login details”Once your server is deployed, retrieve its username and public IP address.
-
Navigate to Services -> SSD VPS.
-
Click the FQDN/Hostname of the server you wish to access. On the Server Information tab, note the Username and Public IP address.
Get a list of VPS servers
Section titled “Get a list of VPS servers”curl --request GET \ --url https://api.ingenuitycloudservices.com/rest-api/ssd-vps/servers \ --header 'Accept: application/json' \ --header 'X-Api-Token: API_KEY'Get server details for a VPS server
Section titled “Get server details for a VPS server”curl --request GET \ --url https://api.ingenuitycloudservices.com/rest-api/ssd-vps/locations/{location_id}/servers/{server_id} \ --header 'Accept: application/json' \ --header 'X-Api-Token: API_KEY'The username is the default non-root user for your operating system, for example debian on Debian or ubuntu on Ubuntu. Always use the username shown for your server.
Step 4: Connect to your server
Section titled “Step 4: Connect to your server”The examples below use ubuntu as the username and 203.0.113.10 as the server IP. Replace them with your own details.
If your key is in the default location (~/.ssh/id_ed25519 or ~/.ssh/id_rsa), SSH will find it automatically:
ssh ubuntu@203.0.113.10If your key is stored elsewhere, point to it with -i:
ssh -i ~/.ssh/my_vps_key ubuntu@203.0.113.10The first time you connect you will be asked to confirm the server’s fingerprint. Type yes to continue.
ssh ubuntu@203.0.113.10If your key is not in the default location:
ssh -i $env:USERPROFILE\.ssh\my_vps_key ubuntu@203.0.113.10-
Open PuTTY and enter
ubuntu@203.0.113.10in the Host Name field, with port22. -
In the left-hand menu, go to Connection -> SSH -> Auth -> Credentials.
-
Under Private key file for authentication, click Browse and select your
.ppkfile. -
Go back to Session, enter a name under Saved Sessions and click Save so you don’t need to repeat these steps.
-
Click Open to connect.
If your key was generated with ssh-keygen rather than PuTTYgen, open it in PuTTYgen with Load and click Save private key to convert it to .ppk format first.
Save your connection details (optional)
Section titled “Save your connection details (optional)”On macOS, Linux and Windows (PowerShell) you can add an entry to your SSH config file (~/.ssh/config) to avoid typing the username, IP and key path every time:
Host my-vps HostName 203.0.113.10 User ubuntu IdentityFile ~/.ssh/id_ed25519You can then connect with:
ssh my-vpsRunning commands as root
Section titled “Running commands as root”The default user has sudo privileges. Run individual administrative commands with sudo, or open a root shell:
# Run a single command as rootsudo apt update
# Switch to a root shellsudo -iTroubleshooting
Section titled “Troubleshooting”Permission denied (publickey)
- Check you are using the username shown in the control panel (for example
ubuntu), notroot. - Make sure you are using the private key that matches the public key selected at deployment. Use
-ito specify it explicitly. - On macOS and Linux, your private key must not be readable by other users. Fix its permissions with
chmod 600 ~/.ssh/id_ed25519.
I’ve lost my private key
- A lost private key cannot be recovered. Generate a new key pair, then use Recovery Reboot to add the new public key to the default user’s
~/.ssh/authorized_keysfile on your server’s disk. If you need help, please contact our support team.
Adding more keys or users
- To grant access to additional people or devices, append their public keys to
~/.ssh/authorized_keyson the server (one key per line).
If you are still unable to connect, please contact our support team.