vicigeeksimple guides
Browse
All guides

Running your system · Start here · foundations

SSH basics: connect and verify a server identity

Make an SSH connection safely, understand host keys and avoid accepting an unexpected server.

Reader setup

Before you start

Run each step in order and move only when the outcome is confirmed.

  1. Terminal basics
  2. A lab server address
  3. Authorization from its owner
What you will prove
You can connect to a known lab server and recognize why a changed host-key warning matters.
Safety boundary
Never override a host-key warning just to get connected; verify the fingerprint out of band.

Reader path

How to use this article

  • Use it when: You need a fixed sequence to make a deployment or configuration change now.
  • Expected result: Follow each step and verify the outcome before changing the next layer.
  • Start here: Start at the first section and complete every checkpoint before moving to the next.

Beginner curriculum

Stage 1 of 7: Linux and network basics

Lesson 6 of 7 · Step 6 of 34

01 / 05

SSH authenticates both sides

Secure Shell (SSH) encrypts a remote terminal session end to end. Your client verifies the server's identity using a host key, then the server authenticates you — with a password, a key pair, or another method the administrator configured. Encryption protects the conversation from eavesdropping; it says nothing about whether you should be having that conversation with this particular server in the first place, so the two checks are independent and both matter.

`ssh -V` prints your local SSH client's version, which matters because an older client sometimes lacks support for a key type or cipher a modern server requires, or, less commonly, still defaults to something a modern server refuses outright. Knowing your version before you troubleshoot a failed connection saves a great deal of guessing.

SSH normally listens on TCP port 22, though an administrator can move it — another reason "I can reach the server" and "I can reach its SSH port" are separate facts, in the same spirit as the DNS-versus-reachability distinction the next lesson covers in more depth.

Trace path · read left to right
01Your terminal02Host key check03Remote shell

Visual walkthrough

Follow three real demo screens

Captured on an isolated VICIdial demo: Administration screens on September 24, 2026, and the idle Agent screen on August 11, 2026. Each caption states its own capture time, and every sanitized image helps you recognize a related screen; none proves that this article's call, command, or result occurred.
Step 1 · Find system administration

Use the Administration map

Sanitized VICIdial Administration menu showing phones, carriers, servers, system settings, and system statuses
Captured September 24, 2026 at 21:34:11 UTC on the authorized isolated demo. This menu is a navigation map only; it does not show that any system-wide setting was changed or verified.
Step 2 · Check permission scope

Review user-group boundaries

Sanitized VICIdial User Groups Listings page showing the fixture user group
Captured September 24, 2026 at 21:53:04 UTC on the authorized isolated demo. This page shows group structure only; it does not prove that an account has a particular permission or that access was changed.
Step 3 · Read global settings

Inspect system-wide security and API context

Sanitized VICIdial Modify System Settings page showing revision, schema, interface, SIP-stack, and API-related controls
Captured August 11, 2026 at 16:22:08 UTC on the authorized isolated demo. This is a read-only view of system-wide settings with no credentials or addresses; it does not prove that a setting was changed or that an API request succeeded.

02 / 05

Host keys prevent wrong-server mistakes

The first time you connect to a server, SSH asks whether to trust the host key it presents, and after you accept, it remembers that key in your local known_hosts file. A later warning that the key has changed can be entirely normal — after a deliberate server rebuild or a planned key rotation — but it can equally signal a DNS problem, a routing change, or an interception attempt, and SSH itself cannot tell those apart for you.

The only safe response to a changed-key warning is to verify the new fingerprint through a separate, trusted channel — your cloud provider's console, a colleague on a phone call, an internal wiki page — before you accept it. Typing yes because the warning is inconvenient defeats the entire purpose of host-key checking.

A fingerprint is simply a short, human-comparable hash of the full host key — small enough to read aloud on a phone call, which is exactly the property that makes out-of-band verification practical instead of theoretical.

03 / 05

Guided sample: inspect your local SSH records

Your `~/.ssh` directory holds your keys and your known_hosts file, both safe to list and inspect without connecting anywhere. `ssh-keygen -F` searches known_hosts for a specific host without modifying it. The address used below, 203.0.113.10, is reserved by RFC 5737 (a Request for Comments — one of the numbered documents through which the IETF publishes Internet standards) specifically for documentation, so it will never resolve to a real server and searching for it is a harmless way to practice the syntax.

Inspect your local SSH records
ssh -Vls -l ~/.sshssh-keygen -F 203.0.113.10
Evidence · ViciBox 12 demo capture

Captured demo response · 2026-09-23 21:34 UTC. The displayed command is the command that ran; a safe subset label means it was filtered, redacted, or fixture-scoped. Replays only after you select Replay transcript.

Command output line: ssh -V
OpenSSH_9.6p1, OpenSSL 3.1.4 24 Oct 2023
Command output line: ls -l ~/.ssh
total 12
-rw------- 1 root root 684 Sep 10 17:07 authorized_keys
-rw------- 1 root root 2508 Jul 22 13:24 known_hosts
-rw------- 1 root root 1762 Jul 22 13:24 known_hosts.old
Command output line: ssh-keygen -F 203.0.113.10
(no output)
Before you run it
This is local inspection; 203.0.113.10 is a non-routable documentation address.
Success looks like
You see your SSH version and either a matching record or no record for the example address.
Stop if
Stop if ~/.ssh permissions or its files belong to an unexpected account.

04 / 05

Guided sample: connect to an approved lab host

This is a template, not a command you can run as printed: 203.0.113.10 and learner are stand-ins for `<LAB_HOST>` and `<LAB_USER>` — the documentation-only address and placeholder account name that the code block below uses so it stays valid, runnable syntax. Replace both with the real address and username your instructor or your own lab environment gives you, and only after you receive them from that host's owner.

`StrictHostKeyChecking=ask` is the safe, default-equivalent setting: it still asks you to confirm an unknown key rather than silently accepting or silently refusing one. Never change that setting to `no` to make a connection error go away — that disables the exact check this lesson exists to teach you to respect.

Connect to an approved lab host
ssh -o StrictHostKeyChecking=ask learner@203.0.113.10# After verifying the displayed fingerprint through your lab console, type yes.
Not executed · deliberately not run on the demo

This sample changes a system, contacts an outside service, needs a live call, or would print real data from a shared server, so it was not run on the demo. Run it only where you are authorized, and compare the result with the success and stop guidance.

Before you run it
This is a template. Replace <LAB_HOST> and <LAB_USER> — shown here as 203.0.113.10 and learner — with real values from your own lab, and only for a host you are authorized to reach.
Success looks like
The presented fingerprint matches a value you independently verified, and you land at the expected shell prompt.
Stop if
Stop on any fingerprint mismatch. Never pass StrictHostKeyChecking=no just to make the prompt go away.

05 / 05

Protect credentials and access

For VICIdial specifically, prefer individually named accounts over a shared root login, prefer key-based authentication wherever the host supports it, and keep a documented, approved break-glass process for the rare case when a named account cannot get in. None of that is optional once real customer calls depend on the server staying reachable only by the people who should reach it.

A named account also makes an audit trail possible: when three people share one root login, a change made at 2 a.m. has no author, but a change made by a named account does. That single property is worth the small extra setup cost on any host you intend to keep running past this lab.

  • I can explain why a changed host-key warning is not something to click through.
  • I verify a new fingerprint out of band before accepting it, every time.
  • I know the difference between a documentation-only address and a real lab host I have been given.

Evidence ledger

Verification basis

  • The local-inspection sample is a capture: `ssh -V`, `ls -l ~/.ssh` and `ssh-keygen -F` against a documentation-only address never leave your machine. The connection sample is a no-run template because 203.0.113.10 answers nowhere.

Primary references

Sources

  1. OpenSSH ssh manualOpenBSD · accessed September 23, 2026
  2. OpenSSH ssh-keygen manualOpenBSD · accessed September 23, 2026

Follow without guesswork

Get the next article

RSS is live now. Email delivery below is an explicit local preview and sends nothing.Open the RSS feed
Email preview only. The address stays in this browser and is never transmitted.