How to Connect a Server via SSH

Windows PowerShell session displaying a successful SSH login
DevOps Security Masterclass OpenSSH 9+ • Ed25519 Cryptography • Zero-Trust Hardening

How to Connect to a Server via SSH: Complete Step-by-Step & Hardening Guide

Secure Shell (SSH) is the ubiquitous cryptographic network protocol that empowers system administrators, cloud engineers, and developers to securely manage remote Linux, Unix, and BSD servers over unsecured networks. Whether administering high-performance cloud nodes or configuring private database clusters, mastering how to connect to a server via SSH—while implementing robust public-key cryptography, port forwarding tunnels, and zero-trust configuration hardening—is the foundational skill for modern infrastructure management.

Every remote command sent across an unencrypted protocol (such as legacy Telnet or plain FTP) is vulnerable to packet sniffing, credential interception, and man-in-the-middle (MITM) attacks. SSH solves this vulnerability by establishing an encrypted tunnel secured by modern ciphers (such as AES-256-GCM and ChaCha20-Poly1305) and asymmetric elliptic-curve cryptography.

When you deploy high-speed cheap VPS hosting or bare-metal dedicated servers, SSH provides the primary out-of-band management console for server provisioning, package updates, and system monitoring. In this comprehensive technical masterclass, we guide you through connecting via SSH across all operating systems, generating high-security Ed25519 keys, hardening your sshd_config against brute-force attacks, configuring multi-hop bastion jump hosts, and troubleshooting common connection errors.

1. The Anatomy of SSH: How Secure Shell Protocol 2 Protects Your Data

The SSH-2 protocol executes a sophisticated multi-stage cryptographic handshake before granting remote shell access:

🔑
Ed25519 Public-Key Auth
Elliptic-curve key pairs providing high security, compact key size (256-bit), and immunity to brute-force dictionaries.
🛡️
Zero-Trust Config Hardening
Disabling root login, disabling password auth, restricting user access, and enforcing strict directory permissions.
🌐
SSH Tunnels & SOCKS5 Proxy
Encrypted local (-L) and remote (-R) port forwarding to access remote database ports and private admin panels securely.

During the connection negotiation phase, the client and server negotiate cryptographic parameters based on strict cryptographic standards:

  1. Key Exchange (Diffie-Hellman / Curve25519-SHA256): The client and server independently calculate a shared secret key over the public network without either party transmitting the secret itself, providing perfect forward secrecy (PFS).
  2. Host Authentication & Fingerprint Verification: The server presents its public host key. The client verifies this signature against its local ~/.ssh/known_hosts file to prevent active man-in-the-middle impersonation.
  3. Symmetric Encryption Channel: Once authenticated, all bidirectional traffic—including keystrokes, passwords, command outputs, and file transfers—is encrypted using symmetrical session ciphers such as AES-256-GCM or ChaCha20-Poly1305.
  4. Hardware Token Verification: When utilizing FIDO2 security keys (e.g. YubiKeys via sk-ssh-ed25519), user presence verification requires physical touch and PIN entry on the hardware token before authentication completes.

2. Step-by-Step Guide: Connecting via SSH Across All Operating Systems

A. Linux & macOS (Native Terminal)

Open your terminal and execute the standard SSH command syntax:

ssh username@your_server_ip -p 22

Upon your first connection, the terminal prompts: “The authenticity of host … can’t be established. Are you sure you want to continue connecting (yes/no/[fingerprint])?” Type yes and press Enter to save the host key to your known_hosts database.

B. Windows 10 & 11 (PowerShell & Windows Terminal)

Windows 10 and 11 come with the official OpenSSH client pre-installed. Launch PowerShell or Windows Terminal and use identical command syntax:

ssh root@192.0.2.100

C. GUI Clients: PuTTY, Termius & MobaXterm

For users who prefer graphic interfaces, popular options include:

  • PuTTY (Windows): Enter your server IP in the Host Name field, set Port to 22 (or your custom port), select SSH connection type, and click Open. To use SSH keys with PuTTY, convert your private key to .ppk format using PuTTYgen.
  • Termius (Cross-Platform): Modern SSH client with built-in SFTP, port forwarding visualization, and encrypted cloud synchronization across macOS, Windows, iOS, and Android.
  • MobaXterm: Advanced Windows toolbox featuring built-in X11 server, tabbed SSH terminal, and multi-execution modes.
💡
DevOps Administration Tip: Once connected to your remote shell, you can manage database instances, execute diagnostic scripts, and verify system daemons. For example, review our guide on checking MySQL versions via Linux terminal commands.

3. Authentication Comparison: Password vs. RSA 4096 vs. Ed25519 vs. Hardware Keys

Relying on traditional password authentication leaves servers exposed to automated credential stuffing and dictionary attacks. Let us evaluate authentication security models:

Method Cryptographic Algorithm Brute-Force Resistance Key Size / Overhead Industry Recommendation
Password Auth None (Plain Hash Exchange) Very Low (Vulnerable to Bots) Variable Deprecated for Production
RSA 4096-bit Prime Factorization High Large (4,096 bits) Legacy Compatibility
Ed25519 (Recommended) Edwards-curve DSA (Curve25519) Maximum Compact (256 bits) Gold Standard for Modern Servers
FIDO2 / YubiKey (sk-ssh) Hardware Security Module + Ed25519 Immune to Local Malware Hardware Token Bound High-Security Enterprise / Fintech

4. Practical Sysadmin Walkthrough: Generating Keys & Hardening sshd_config

Execute this zero-trust security hardening workflow on your server to block 99.9% of automated Internet bot scans:

bash — Complete OpenSSH Key Generation & Hardening Script Linux Shell
# 1. On Local Machine: Generate State-of-the-Art Ed25519 Key Pair
ssh-keygen -t ed25519 -a 100 -C "admin@yourcompany.com"

# 2. Copy Public Key to Remote Server (Port 22)
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 deployer@192.0.2.100

# 3. On Remote Server: Set Strict POSIX File System Permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# 4. Edit Server SSH Daemon Configuration (/etc/ssh/sshd_config)
# Enforce Key-Only Authentication and Custom Port
sudo tee -a /etc/ssh/sshd_config.d/99-hardened.conf << 'EOF'
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding no
EOF

# 5. Open Custom Port in Firewall BEFORE Restarting SSH
sudo ufw allow 2222/tcp && sudo ufw reload

# 6. Test Configuration Syntax and Restart SSH Daemon
sudo sshd -t && sudo systemctl restart sshd

5. Advanced SSH Productivity: Bastion Hosts, File Transfers & ~/.ssh/config

Beyond terminal interactive shells, SSH powers lightning-fast and encrypted data synchronization:

  • High-Speed Incremental Sync with Rsync: Synchronize directories securely over SSH with compression and delta-transfer algorithms:
    rsync -avz -e "ssh -p 2222" /local/path/ deployer@192.0.2.100:/remote/backup/
  • Multi-Hop Bastion Jump Hosts: Connect to isolated private network instances through a hardened gateway without exposing internal IP addresses:
    ssh -J bastion@public_ip private_user@10.0.0.50

Instead of typing long IP addresses and ports every time, configure your local client configuration file at ~/.ssh/config:

# ~/.ssh/config Profile Example
Host prod-app
    HostName 192.0.2.100
    User deployer
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 60

# Secure Local Port Forwarding to Access Remote MySQL GUI on Local Port 3307
# Usage: ssh -L 3307:127.0.0.1:3306 prod-app -N

# Multi-Hop Bastion Host (Jump Host) Configuration
Host internal-db
    HostName 10.0.0.50
    User dbadmin
    ProxyJump prod-app

Now, simply typing ssh prod-app or ssh internal-db instantly connects with the correct port, user, jump host routing, and identity credentials. For managing web hosting control panels via terminal, check our breakdown on cloud server management and control panel configuration.

6. Real-World Case Studies: SSH Hardening in Enterprise Environments

Case Study A: Agency Neutralizes 40,000 Daily Bot Probes

A digital agency managing 35 production servers observed over 40,000 automated brute-force attempts on port 22 daily. By moving to custom SSH ports, enforcing Ed25519 key authentication, and disabling passwords, failed login noise dropped by 99.8%, eliminating CPU authentication spikes.

Case Study B: Secure Remote Database Management

A fintech SaaS architect needed to connect DBeaver GUI to a remote PostgreSQL database. Rather than exposing port 5432 to the public internet, they established an encrypted SSH local port forward, ensuring all database traffic remains fully encrypted in transit. Learn more about our infrastructure in our review of essential hosting services and features.

7. Top 5 Common SSH Errors and How to Fix Them

1
Error: "Permission denied (publickey)": Ensure your public key exists in ~/.ssh/authorized_keys on the remote server and that file permissions are set strictly to chmod 600.
2
Error: "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!": Occurs when a server is reinstalled with a new host key. Remove the old fingerprint using ssh-keygen -R your_server_ip.
3
Error: "Connection timed out": Check firewall rules (UFW/iptables) on the server or cloud security groups to ensure the SSH port (e.g. 22 or 2222) is open.
4
Error: "Too many authentication failures": Occurs when your local SSH client attempts all loaded keys in ssh-agent. Specify the exact key using ssh -i ~/.ssh/specific_key user@server -o IdentitiesOnly=yes.

📌 Frequently Asked Questions (FAQ)

Q What is the difference between SSH and Telnet?

Telnet transmits all data—including usernames and plaintext passwords—completely unencrypted over the network, allowing anyone capturing packets to read them. SSH encrypts the entire connection channel end-to-end using strong cryptographic ciphers.

Q Why is Ed25519 preferred over RSA for SSH keys?

Ed25519 uses modern elliptic curve cryptography (Curve25519), offering higher security than a 4096-bit RSA key with a much shorter key length (256 bits). It generates keys faster, signs signatures faster, and has no known side-channel vulnerabilities.

Q How do I keep my SSH connection alive without disconnecting on idle?

Add ServerAliveInterval 60 to your local ~/.ssh/config file, or configure ClientAliveInterval 300 and ClientAliveCountMax 3 in the server’s /etc/ssh/sshd_config to send periodic keep-alive null packets.

Q What happens if I lose my SSH private key?

If password authentication is disabled and you lose your private key, you cannot connect via standard SSH. However, you can access your server via the Web VNC Console or Out-of-Band IPMI/iDRAC console in your Onlive Server control panel to inject a new public key.

8. Conclusion: Build a Bulletproof Remote Administration Stack

SSH is far more than a simple terminal connection utility—it is the cryptographic cornerstone of enterprise cloud administration. By transitioning from vulnerable passwords to Ed25519 public-key authentication and enforcing strict sshd configuration standards, you create an impervious defense perimeter around your critical infrastructure.

Combine secure SSH key management with Onlive Server’s high-availability Cloud VPS and Bare-Metal Dedicated hosting to manage your mission-critical applications with absolute confidence, lightning-fast response times, and total zero-trust security.