There’s an adage about how the Cloud is just someone else’s computer, which is just a humorous way of pointing out some of the inherent insecurities of using the Cloud for all your data storage.
But it also expresses the fact that whenever we need to work on files located on a server, we’re just using someone else’s computer from a distance, and we need a reliable, secure method of doing so. SSH is a protocol for securely accessing remote systems, and it’s integral to the functioning of the internet.
SSH stands for “Secure Shell”. The shell part of it means it is a command line interface. When you connect via SSH, you’re harkening back to the days when everyone typed commands into their computers instead of clicking on buttons with a mouse. For many tasks in administering or configuring computers, the command line is still indispensable. It also lends itself well to connecting on the go using a phone or an iPad, since you don’t have to wait for your screen to redraw itself like you do with a VNC or Remote Desktop connection.
Also, it’s just useful to know how to talk to a computer more directly, using powerful commands that make it simple to perform tasks that are difficult or not directly possible in a GUI.
SSH isn’t relegated strictly to command line sessions, though. It’s also used as the basis for SFTP and other protocols which are often used in applications with graphical user interfaces. Any program can implement SSH as an underlying mechanism for communications between computers.
Before SSH, there was another command line connection type known as Telnet. In usage terms, it was basically the same thing, but it wasn’t secure. Everything was passed in clear text, and this meant that people could sniff network traffic and steal people’s account passwords as they logged into other computers using Telnet. To solve this problem, a young PHD student named Tatu Ylonen created SSH, and he then went on to make a living out of all things SSH with his company SSH Communications Security.
Unix based machines such as Macs and Linux computers have built in terminals capable of running SSH. Windows requires you to install a third party SSH app, although Microsoft released an SSH client in Windows 10 with an April 2020 update.
The first prerequisite for playing with SSH is that you need another computer somewhere running an SSH server that you have an account you can log into on.
The basic syntax for connecting to a remote host is pretty simple. You issue the ssh command and tell it what computer you’re trying to log into and who you’re trying to log in as.
In this example, I’m trying to connect to a server hosting the domain “somesecretcomputer.com” as user “scott”. Please don’t try actually try connecting to that domain, because for all I know it goes straight into some evil hacker’s lair (or worse yet, the NSA’s).
Normally what will happen at this point is that you’ll be prompted for a password. Once you’ve entered it, you’ll be at the command line of the other computer and you can access its filesystem as though you were right there in front of it, typing into a terminal window directly on that machine. It’s like teleporting in Star Trek, except without all the disappearing and reappearing and listening to your Scottish engineer yell at you about how stressful you’re making his life.
SSH itself is very simple from a user standpoint. All the magic takes place in the background, as SSH handles the work of encrypting the session network traffic. The rest of it is just you controlling the other computer by using commands it’s familiar with based on what operating system it’s running.
No. That’s not it. When it comes to computers and networking, that’s never it. There is always more. In the case of SSH, there are some additional convenience and security considerations that you should know about, especially if you need to use it frequently.
Next time, we’ll dive into the fascinating world of SSH keys, public key authorization, and asymmetric cryptography. If you think you need a nap now, just wait!