Copied!
Laravel
React
Vue

Best Beginner’s Guide to SSH: Secure Your Git, Servers & Deployments Like a Pro

best-beginner’s-guide-to-ssh
Shahroz Javed
Oct 30, 2025 . 235 views

SSH (Secure Shell) is one of the most essential tools every developer should know. Whether you're pushing code to GitHub, connecting to a VPS, or deploying applications — SSH keeps your communication secure and encrypted.

What is SSH?

SSH stands for Secure Shell. It’s a secure communication protocol that allows one computer to safely talk to another over a network. It’s mainly used for logging into remote servers, transferring files, and authenticating Git operations securely.

⚠️ SSH encrypts all your communication — meaning no one can steal your passwords or code while you’re online.

Why SSH Exists

Before SSH, developers used insecure protocols like telnet or ftp, which sent everything — including passwords — in plain text. Anyone monitoring your network could easily steal that data.

SSH solves this by:

  • 🔒 Encrypting communication between client and server
  • 🧩 Allowing key-based authentication (no need for manual passwords)
  • 🧠 Enabling automation tools and CI/CD pipelines securely

SSH Keys = Your Digital ID Cards

SSH uses two keys to identify you:

  • Private key: Your personal secret key — keep it safe on your local computer.
  • Public key: Your “business card” that you add to GitHub, GitLab, or servers to recognize you.

What You Can Do with SSH

SSH isn’t only for GitHub — it’s much more powerful:

  • 💻 Access remote servers securely — ssh root@your-vps-ip
  • 🔁 Authenticate Git operations — clone, push, pull without typing passwords
  • 📦 Transfer files via scp or sftp
  • ⚙️ Automate deployments with scripts and CI/CD pipelines

Essential SSH Commands and Setup

Navigate to SSH Folder

cd ~/.ssh

List Existing SSH Keys

ls -al ~/.ssh
# or if already in .ssh folder
ls -al

Generate a New SSH Key

It’s recommended to generate keys in your user’s SSH folder (e.g., C:\Users\YourName\.ssh\ on Windows).

ssh-keygen -t ed25519 -C "your_email@example.com"
# if ed25519 is not supported
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Add SSH Key to SSH Agent

The SSH agent is like your personal “key manager” — it holds your keys securely in memory while you’re working.

# Start the agent
eval "$(ssh-agent -s)"

# Add key to agent
ssh-add ~/.ssh/id_ed25519

# View loaded keys
ssh-add -l

# Remove all keys
ssh-add -D
💡 Related: Learn about How Git Authentication Works with SSH.

Auto-start SSH Agent on Git Bash (Windows)

# Add this to ~/.bashrc or ~/.bash_profile

eval "$(ssh-agent -s)" >/dev/null
ssh-add -l >/dev/null 2>&1 || ssh-add ~/.ssh/id_ed25519

Copy Your Public Key

cat ~/.ssh/id_ed25519.pub

Copy the entire line that starts with ssh-ed25519 or ssh-rsa.

Manage Multiple SSH Keys with Config File

nano ~/.ssh/config

# Personal GitHub
Host github.com-personal
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519

# Work GitHub
Host github.com-work
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

Now you can clone using:

git clone git@github.com-personal:username/repo.git
git clone git@github.com-work:company/repo.git

Adding Your Key to GitHub, GitLab, and Bitbucket

GitHub

Go to Settings → SSH and GPG keys → New SSH Key. Paste your public key and name it (e.g., “My Laptop Key”).

ssh -T git@github.com

GitLab

Navigate to User → Preferences → SSH Keys and paste the key.

ssh -T git@gitlab.com

Bitbucket

Go to Personal Settings → SSH keys → Add new key.

Clone Repositories via SSH

git clone git@github.com:yourname/yourrepo.git

There are two main protocols for Git:

  • HTTPS → https://github.com/username/repo.git
  • SSH → git@github.com:username/repo.git
# Check current remote
git remote -v

# Switch HTTPS → SSH
git remote set-url origin git@github.com:username/repo.git

# Switch SSH → HTTPS
git remote set-url origin https://github.com/username/repo.git

Common SSH Commands

ssh user@host             # Connect to remote server
scp file user@host:/path  # Copy file securely
sftp user@host            # Open secure FTP session
ssh-add -l                # List loaded SSH keys
ssh-keygen -R hostname    # Remove old key from known hosts

Conclusion

SSH is not just a tool — it’s your gateway to secure development and remote work. Whether it’s GitHub authentication, file transfer, or server deployment, mastering SSH will save you time and keep your projects safe.

📑 On This Page