SSH and PuTTY
One of the earlier networking applications was Telnet. It was a technology that allowed a user on one machine to login to another machine and work on it.
But those were simpler times when the two machines were likely in the same building if not the same room. And everyone was working together. There was no need to worry about things like encryption. No one was spying, so it was fine to send un-encrypted commands and data back and forth over the network connection.
But those days gradually came to an end. The internet expanded and with it went the assumption that everyone networked to your computer was a friend. People needed a program with the same capabilities as Telnet but with a secure connection so that the enormous number of people on the internet were not able to eavesdrop on their work.
SSH was developed to address this need and now it has almost completely replaced Telnet as the tool of choice for remote console control.
Secure Shell, or SSH, is not really a program, although it is usually talked about as though it is. Instead, it is a protocol. It allows users to login to other systems and do all the normal things they would be able to do if they were sitting at the other computer's console.
The important element of this is that all of the information transferred back and forth is encrypted so that even when connecting over unsecure networks like the internet, everything is private.
Up into the 1990s, people used Telnet and the later rlogin — which is pretty much the same thing, but with automation features to allow passwordless login.
But in 1995, the Helsinki University of Technology in Finland suffered a packet-sniffing attack that compromised some passwords of people using these tools. This prompted a computer science researcher at the university, Tatu Ylönen, to create SSH to eliminate such vulnerabilities.
Ylönen created his own company, SSH Communications Security, to develop SSH. It was very successful. By the end of the year 2000, there were an estimated two million users of it. But Ylönen's system became proprietary, and there was desire for an open source version of this. In early 1998, a number of versions began to appear.
Since SSH is not itself a program, in order to use it, you will need a client. On Unix machines, you will usually find a program called ssh. Most of the time, this is actually OpenSSH. We will discuss the main clients below.
But in this document, we will focus on PuTTY. This is because it is has a number of advantages to other systems. What's more, it is available on most operating systems.
As we've discussed, SSH is primarily used to allow people to use command shells on remote machines in a secure way. In this way, it is most obviously a replacement for Telnet and rlogin.
In fact, on most Unix systems, both the telnet and rlogin commands are simply links to the ssh program. For normal computing, no one uses Telnet and rlogin anymore.
There are many other advanced ways that SSH is used. For example, it can be used to create a Virtual Private Network (VPN), which allows users to set up a private network on top of a public network like the internet by creating an encrypted tunnel between different machines.
But the main way the SSH is used apart from its use as a terminal is its use for transferring files. Secure FTP (SFTP) uses SSH to keep the transferred information private.
PuTTY was one of the first applications to implement SSH. It is a full featured application for communicating with other systems and for transferring files — all done securely. The basic program is distributed as a single file. You can simply download PuTTY and run it from the command line. But in its complete form it consists of several parts:
- SSH client with connection manager (PuTTY);
- Secure FTP (PSFTP);
- Secure copy or SCP (PSCP);
- Authentifcation agent for storing private keys for the other parts of PuTTY (Pageant);
- Generator of RSA and DSA keys, similar to ssh-add in OpenSSH (PuTTYgen).
PuTTY was first developed for Microsoft Windows. Over the years, it has been ported to many Unix systems as well as Mac OS X. Development continues on older systems like the classic Mac OS. As a result, it is nice to be familiar with, because it is available on just about any system that you might use.
Getting Started With PuTTY
PuTTY is easy enough to use that you can probably just download it and start using it. Check out the PuTTY Download Page. But there are various resources available to help you out:
- PuTTY FAQ: the project's FAQ list is extensive and will answer most of your questions
- Putty Tutorial: SiteGround's simple tutorial that will get you up and running on a Windows machine.
- Using SSH in PuTTY (Windows): a basic introduction that shows you how to download and install PuTTY, and get started.
- A Beginner's Guide to SSH: a basic introduction to SSH using PuTTY.
- Downloading and Configuring Putty: A very helpful video by Michael Holtz Jr that will get PuTTY installed and configured on your machine. It also provides some nice tips for using the program.
There are many alternatives to PuTTY. In particular, OpenSSH is the standard SSH system on Unix machines. We've divided the alternatives up into the free and pay versions. In general, the pay versions are designed for enterprise users — but not always.
- ConnectBot: a SSH client for Android.
- Dropbear: a SSH client and server for Unix-based operating systems.
- lsh: the GNU Project's SSH client and server.
- OpenSSH: the OpenBSD Secure Shell — the standard on Unix operating systems.
- PACManager: a SSH/FTP/Telnet session management tool for Linux.
- Salt: a Windows-based VT terminal emulator built on SSH. Although it is proprietary, it is free.
- Tera Term: a Windows-based terminal emulator.
- TtyEmulator: a free terminal emulator based on SSH.
Although all of them programs cost money, many of them have 30 day trial versions that you can download.
- AbsoluteTelnet: a windows application that combines SSH and SFTP clients with various terminal emulators.
- Bitvise: a combined Windows SSH server and client .
- Private Shell: a full-featured Windows SSH client that includes SFTP and much more.
- PenguiNet: a Windows-based tabbed SSH client to maintain many connections at once.
- Reflection: a terminal emulator based on SSH.
- SecureCRT: a SSH client available for Windows, Mac, and Linux.
- Tectia SSH: the enterprise SSH system from the company that invented SSH.
- TN3270 Plus: a Windows telnet emulator that includes SSH security.
- Token2Shell: a Windows-based SSH client with extra features like seamless remote copying.
- Xshell: a Unix-based SSH terminal emulator.
- ZOC Terminal: a SSH terminal for Windows and Mac.
Non-Terminal SSH Applications
SSH is used in many other applications. It is most especially associated with FTP and other file transfer functions. But it is also used for more advanced functions like remote desktops and securing X-Windows systems.
- CRAX Commander: a proprietary Mac file manager that includes SSH and SFTP.
- Cryptzone MindTerm: a Java based library for including SSH into your own applications. They also offer a standalone program. It is free for personal and limited commercial use.
- FileZilla: a free FTP application (client and server) that supports SFTP as well as FTPS.
- MobaTerm: an enhanced Xterm application with built in SSH. MobaTek offers a free home version and a reasonably priced professional edition.
- ProxyCap: a commercial application for controlling your use of proxy servers with native SSH support on Windows and Mac computers.
- SFTPPlus: a commercial enterprise file transferring system including SFTP and SCP both over SSH version 2.
- SmartFTP: a commercial Windows-based program primarily focused on file transfer, but including terminal emulation with SSH as well.
- CodePlex Terminals: a commercial remote desktop client, with quite a bit more.
- WinSCP: a free SSH based FTP for Windows, based on PuTTY.
SSH is a very important and powerful technology for people who need to use command consoles on remote computers. Depending upon the kind of work you do, this can be a constant need or something you rarely need.
For individuals, PuTTY is a great choice, because it is available on pretty much any computer you may be working on. But if you have special needs, there are lots of options available to you. Regardless, you will know that you can work in privacy.