SSH Introduction and Resources

Secure Shell (SSH) is a network communication protocol used to create an encrypted connection between a local client application and a remote server. SSH makes it possible for the client and server to communicate securely over a public, unsecured network, such as the internet.

The term SSH is sometimes used to refer to the applications used to communicate with a remote server. However, SSH actually refers to the communication protocol itself, not the application used to enable communication between the client and server.

SSH Applications

SSH is used all of the time by webmasters and developers. There are two primary ways that website professionals use SSH whether they realize it or not.

  1. RSH, or remote shell access, with an application such as PuTTY, provides access to the command-line on a remote server.
  2. Secure file transfer protocol, or SFTP, is supported by many popular FTP clients, including Filezilla, and makes it possible to transfer files to and from a remote server over a connection secured by SSH.

In addition to RSH and SFTP, SSH is used to secure several other types of server access including rsync file transfer and synchronization, FTP over SSH (FISH), secure copy (SCP), and full-fledged virtual private network (VPN) access to the server with OpenSSH. For an overview of SSH applications, take a look at our guide to SSH Clients: Intro, Putty, and Alternatives.

History of SSH

SSH was first developed in 1995 by Tatu Ylönen in direct response to a password-sniffing attack directed at the Helsinki University of Technology at which Ylönen was a member of the faculty. Prior to the release of SSH, communication between an client application and a remote server over an unsecured network was possible thanks to protocols such as rlogin, RSH, Telnet, and rexec. However, all of those protocols transmitted information, including login credentials, in plaintext. This meant that someone with the right technical prowess and access to the network could potentially intercept messages and gain access to server login credentials in plaintext.

SSH was an immediate hit. The first version, SSH-1, was released as freeware in July of 1995 and was in use by 20,000 users spread across 50 countries in less than six months. By the year 2000, the number of active SSH users had exploded to 2 million.

Ylönen founded SSH Communcations Security in December of 1995 to market and further develop the protocol. While the original version of SSH was built using a variety of free components and released as open source software, over time SSH grew increasingly proprietary. In 1999, a group of developers used the last open source version of SSH to create a free and open source version of SSH. This free version evolved into what is known today as OpenSSH and is incorporated into Unix, Linux, and Windows operating systems.

How Does SSH Work?

Communicating over a network connected secured by SSH requires that three different layers work in unison:

  • Transport layer: This layer handles the exchange of encryption keys between the client application and remote server, and manages the SSH connection for the duration of the session.
  • User authentication layer: This layer allows the user to authenticate themselves to the server using a variety of different authentication methods. The most common method is a user password, but passwordless and one-time password authentication systems may also be used depending on the client application in use.
  • Connection layer: This is the layer over which the SSH client interface operates and includes shell access applications such as PuTTY, secure FTP clients such as Filezilla, and all other SSH clients.

The three-part architecture of SSH is part of what makes the protocol so popular. Thanks to the decoupled design, it can be used for many different purposes by designing client applications to accomplish specific tasks over a connection secured with SSH.

Resources

SSH resources abound. If you want to learn how you can use SSH to better manage a remote server, here are a few excellent resources to consult.

SSH: The Secure Shell, The Definitive Guide (2001) by Barrett and Silverman is an excellent O'Reilly book, if a bit dated. However, it's freely available online and the first chapter provides a very good technical introduction to SSH. If you're new to SSH and want to better understand the technical basis of this communication protocol take a few minutes to review the first chapter of this text.

SSH: What and How is a tutorial by Jonathan Cutrell that is freely available at Envato Tuts+. This tutorial walks through the process of setting up SSH on a local system and a remote server, configuring passwordless login to the server, and demonstrates how to push code to a git repository on the remote server. This is a particularly good resource if you are a developer who wants to host git repositories on a private remote server.

Almost Everything About Secure Shell by Muhammed Torkey is an online course available at Udemy. The course introduces secure shell, explains how it works, covers SSH installation and configuration, and introduces a variety of SSH applications. After completing this course you'll be able to use SSH for remote terminal access, file transfer, as a VPN, and also know how to make SSH as secure as possible.

SSH Tutorial — Basic server administration with SSH by LearnCode.academy is a fast-paced and short overview of managing a remote server with SSH. In less than 10 minutes, this YouTube video demonstrates how to use SSH for shell access, file transfer with rsync, and passwordless login.

SSH Tutorial for Linux is a detailed tutorial that dates back to 1999, but has been updated multiple times since then. It covers passwordless login and a variety of SSH applications. It's applicable to Linux and Unix-based systems, including Mac OS X. However, if you're using a Windows machine, take a look at the SSH Tutorial for Windows instead.

All of the resources mentioned so far have been overviews that cover a variety of SSH applications and uses. If you want to learn more about specific SSH applications, especially remote shell access with PuTTY, refer to our article SSH Clients: Intro, Putty, and Alternatives. There you'll find PuTTY tutorials, a list of free SSH clients, a list of non-terminal SSH applications, and more.

Summary

SSH is a flexible communication protocol that can be used to create a secure communication tunnel between a local client application and a remote server. Once you're familiar with SSH, you'll be to use a variety of SSH client applications to securely work on a remote server with the same level of control that you would have if you had physical access to the server.


Further Reading and Resources

We have more guides, tutorials, and infographics related to the internet and web development:

Ultimate Guide to Web Hosting

If you are going to be transferring files around the internet, chances are you are going to be using one or more web servers. Check out our Ultimate Guide to Web Hosting. It will explain everything you need to know in order to make an informed choice.