Connect your first server in 10 minutes: from sign-up to an SSH terminal in OpsMate
Author: OpsMate team
Updated
Written from the current product. Use a test server you are allowed to access, not a production machine.
Three things before you start:
- Use a test machine. A cheap new Ubuntu VPS is best, or any machine you can afford to break. Do not use production.
- SSH private keys only. Password login is not supported. If your cloud provider only gave you a root password, follow “Prep 2” below and add a key first. That takes a few extra minutes.
- Where data goes: each time you ask the AI for help, recent terminal output is sent to the cloud AI along with your message, so remove sensitive information first.
Free includes 500 AI calls per month and unlimited servers.
Prep (do this before you start the clock)
You need:
- An Ubuntu server (22.04 and 24.04 both work)
- The server’s public IP, SSH port (usually 22), and login user (
rootor a user who can sudo) - SSH reachable from the public internet. OpsMate connects from the cloud and does not promise a fixed egress IP, so do not allowlist only one address. For a test, the simplest path is to allow SSH from the internet. If the server can only accept a few IPs, use the desktop app: it connects from your own computer, so allowing your own IP is enough
- An email address that can receive a verification code
- A browser on a computer (you will paste or upload a private key; a phone is a poor fit)
Prep 1: confirm the private key can log in
On your own computer:
ssh -i ~/.ssh/your-private-key -p 22 user@SERVER_IP
If that login works, you can start.
Prep 2: password only? Create a key just for this test
Generate a new key for this test. Delete it when you are done. It does not affect your other machines:
# On your own computer
ssh-keygen -t ed25519 -f ~/.ssh/opsmate_test -C opsmate-test
ssh-copy-id -i ~/.ssh/opsmate_test.pub -p 22 user@SERVER_IP # enter the server password once
ssh -i ~/.ssh/opsmate_test -p 22 user@SERVER_IP # no password means it worked
- Give OpsMate the private key
~/.ssh/opsmate_test, not the.pubpublic key. - A passphrase is optional. If you set one, fill in “Key Passphrase” when you add the server.
- ed25519 works. The key must be OpenSSH (
-----BEGIN OPENSSH PRIVATE KEY-----) or PEM. If the key has a passphrase, enter it in “Key Passphrase”. PuTTY.ppkfiles are rejected; export OpenSSH format from PuTTYgen first.
Step 1: open the sign-up link and accept the terms
Open the invite link you were sent. It starts with https://app.itops.sh/login?screen=register&lang=en%E2%80%A6.
- The page spins for a few seconds (about 6 seconds in one run, with no text). Wait.
- You should see “Create your free workspace”.
- Check “I have read and agree to the Terms of Service and Privacy Policy”. The register button stays disabled until you do.
- Click “Register with email”.
Expected: you land on the auth.itops.sh sign-up page. That page is English and looks different. That is normal.
Time: varies with the network and the machine.
Step 2: register with an email code
- Enter your email again and click Create account.
- This can take more than 10 seconds with no progress text (about 12 seconds in one run). Do not click again.
- Get the 6-digit code from your email. Check spam.
- Enter the code. The sixth digit submits it.
- On Create a passkey, you can skip it. Click Skip in the top left (easy to miss).
- The return redirect may be a blank screen for a few seconds.
Expected: app.itops.sh/servers, the Server Management page, with an empty list and an “Add Server” button. You do not set a password, username, or phone number.
Time: varies with the network and the machine.
Step 3: add the server
Click “Add Server”. A drawer opens on the right in two sections. They are collapsed, and only one is open at a time. After the first section, open “SSH Connection”.
Basic Info
| Field | What to enter |
|---|---|
| Name (required) | Anything, for example test-vps-1 |
| IP Address (required) | The server’s public IP |
| Group (required) | “Default” is already selected. Leave it. |
| Description | Optional |
SSH Connection
| Field | What to enter |
|---|---|
| SSH User | There is no default. You must fill this in, for example root or your sudo user |
| SSH Port | 22 by default |
| Key source | “Paste or upload new key” (usual for a first server) |
| SSH Key | Paste the whole private key, or click “Upload private key” and choose opsmate_test (no extension is fine; do not choose .pub) |
| Save to credential vault as | Required for a new key (no asterisk on the label), for example test-vps-key |
| Key Passphrase | Only if the private key itself has a passphrase. Otherwise leave it empty |
Click Save.
Where the private key is stored: SSH private keys and passwords added in the web console are stored encrypted. After you save, the page no longer shows the private key, and you can reuse it for another server. To keep credentials on your machine by default, use the desktop app (preview, macOS / Linux).
Expected: the drawer closes, the server appears in the list, and the card shows “SSH Key: Configured”.
Time: varies with the network and the machine.
Step 4: wait for discovery to finish
After you save, OpsMate connects and scans host resources and Docker containers.
- Status moves from “Scanning” to “Pending review” or “Ready”. A drill machine with 23 containers finished in about 18 seconds. A new empty machine should be faster.
- When this is the only server in the account, a successful scan becomes “Ready” on its own. The page may still mention “Finish setup”. Clicking it is optional.
- Open Server → Overview shows the operating system, CPU, memory, and disk.
- If Docker is not installed, the scan still succeeds. Host info is shown, the Docker row says “Docker Engine not detected”, and the container count is 0. After you install Docker, click “Rescan” on the server.
- A non-root user who is not in the
dockergroup is not a discovery failure. Host info still appears. That user cannot see containers, so you get the same “Docker Engine not detected” line and 0 containers. To see containers, runsudo usermod -aG docker USERon the server, then click “Rescan”.
Expected (you are connected once this is true): Overview shows the operating system and CPU, memory, and disk.
Time: varies with the network and the machine.
Step 5: open the terminal and try something that does not change the server
On the server card, click “Terminal”, or Open Server → the “SSH Terminal” tab.
The AI assistant and the SSH terminal are on the same page: AI on top, terminal below. Drag the split to resize them.
Type these yourself first:
uptime
df -h
Then ask the AI in plain language. You can use the example in the input:
Check Docker container status and disk usage
Or:
See whether memory and disk on this machine are enough, and whether any filesystem is almost full
Commands the AI runs show up in the terminal below, so you can see exactly what ran.
- Each time you ask the AI for help, recent terminal output is sent to the cloud AI along with your message, so remove sensitive information first.
- Commands that fail the safety check are blocked and never run. Low-risk fixes run automatically by default, and every step is logged.
- Each question counts as one AI call. Free includes 500 per month.
Expected: the terminal shows output from uptime and df -h, and the AI replies with a short conclusion.
Time: varies with the network and the machine.
Total: varies with the network and the machine (aim for under 10 minutes; generating a key in prep 2 does not count).
If you get stuck
| What you see | Likely cause | What to do |
|---|---|---|
| The sign-up page keeps spinning | The first screen is slow (about 6 seconds in one run) | Wait 10 seconds, then refresh |
| “Register with email” cannot be clicked | Terms are not accepted | Check “I have read and agree…” |
| Create account seems to do nothing | The request is still running, sometimes for more than 10 seconds, with no message | Do not click again. Wait |
| No verification code | It is in spam, or it has not arrived yet | Check spam, then resend after a minute |
| “Logto login failed” after the redirect | An occasional return-from-login failure | If it appears, go back to the sign-in page and sign in again with the same email. If it still fails, send Vincent a screenshot |
| Upload says “This is a public key file…” | You selected .pub | Choose the file with the same name and no .pub |
| “File content does not look like a valid PEM private key” | The file is not OpenSSH or PEM, for example a PuTTY .ppk | Export OpenSSH format from PuTTYgen, or generate a new key in prep 2 |
| Save says “Enter a vault name…” | “Save to credential vault as” is empty | Type any name |
| “Discovery failed: Check SSH access and Docker permissions on the host.” | ① Wrong IP, port, or user; ② the security group or firewall blocks public port 22; ③ the public key is not in that user’s ~/.ssh/authorized_keys; ④ root login is disabled (PermitRootLogin no); ⑤ fail2ban blocked the connection | From another network (for example a phone hotspot), try the prep 1 command. If that login fails, fix SSH first. A non-root user who is not in the docker group does not cause discovery to fail. You only see no containers (see step 4) |
| The terminal says “SSH key is not configured…” | The private key was not saved | Open the server, then “Edit SSH / settings”, and paste the private key again |
| The terminal says “Connection failed” | Same as discovery failure ①–⑤ | Same as above |
| The AI says “AI request failed” | Quota is used up, or the service failed | The generic message is “AI request failed”. If a quota link is shown, the button is “View My Subscription”. You can also open My Account → My Subscription. If quota remains, send Vincent a screenshot |
When you are done (optional)
- On Server Management, delete the server. The confirm text is “Delete this server?”. Then open “Credentials Vault” in the left nav and delete the key.
- On the server, delete the
opsmate-testline in~/.ssh/authorized_keys. That key can no longer log in.
If you want to keep going (not part of the 10 minutes)
Adding a server does not start patrols. For a scheduled patrol, open Monitoring Center → Monitoring Tasks in the left nav, create a task, then click “Start”. The one-round control is the same button as 「立即巡检」 in the Chinese console. Before you turn that on: commands that fail the safety check are blocked and never run. Low-risk fixes run automatically by default, and every step is logged. Use a test machine for this too.
Desktop download: https://www.itops.sh/en/download/. This guide does not cover adding a server in the desktop app.
Afterward, tell Vincent three things
- Where you got stuck: which step, what you saw, and a screenshot if you can (cover the IP and the key first)
- How many minutes it took: from opening the link until
uptimeprinted in the terminal - Whether you would use it again: yes or no, and why
Do not send passwords or private keys to anyone, including us.
Try OpsMate
500 free AI calls per month and unlimited servers. The desktop app keeps SSH credentials on your machine by default.
Need help interpreting the evidence?
OpsMate (itops.sh) puts your SSH terminal and AI on one page, and you review the evidence. Each time you ask the AI for help, recent terminal output is sent to the cloud AI along with your message, so remove sensitive information first.
Start free Desktop with local credentials