amazon media file explorer download upload index folder image licenses menu widget Play Pause profile-settings more dots-two-horizontal dots-two-vertical more-vertical pending google-plus hangouts facebook instagram whatsapp spotify telegram twitter vine renren rss youtube twitch vimeo flickr dribble behance deviantart 500px steam github soundcloud skype reddit linkedin lastfm delicious stackoverflow pinterest xing flattr foursquare yelp World

Getting Started With OpenSSH

OpenSSH allows you to connect remotely to other GNU/Linux servers/machines securely. It isn't just a tool for a secure network connection, it also provides a large suite of tools such as a powerful authentication method, sophisticated configuration option, and lots more.

Differences Between OpenSSH and SSH

Before we learn how SSH works, I want you to be aware that OpenSSH is the open-source version of the original SSH software and they both use the same protocol, so, when you are asked about the differences between both, it is basically straightforward...

OpenSSH is the opensource version of the secure shell (SSH) protocol for remotely controlling, or transferring files between machine, while the original SSH is a commercial version and does more than remote controlling/transferring files securely.

Since OpenSSH is the open-source version and the most popular one, that is what you would most likely be using.

How Does SSH Works

SSH provides a secure channel over an unsecured network in a client-server architecture.

Don't get the "client-server" terms confused, the client in most cases is your own PC that you want to use to establish a connection to the server. To use this, you need the ssh client application (I'll show you how to install this in a moment). 

On the other hand, the server is the machine you are connecting to, it has a daemon (background task) that listens continuously for connection from the client, for example...

The Client (Your PC) initiates the connection by contacting the server. If you remember, I said the server listen for connection (this is usually the default port 22), and once this connection is initiated, the server responds by sending the client a public cryptography key, once the key is verified, the server identity is added in known_hosts file in ~/.ssh directory on the client machine.

The known_hosts file contains the info about all the verified servers by the client, if a server key has been verified before, it would instead move it to the next phase, which is...

Negotiating parameters and thus open a secure channel for the client. Lastly, the user/the client machines log into the server.

Installing OpenSSH

Regardless of the GNU/Linux distro you are using, the Openssh server would have most likely been pre-installed. To confirm the availability, type...

which sshd

If you have it installed, you would see the following output:


If you don't have it installed, your output would be empty, install it using the following command:

sudo apt install openssh-server

OpenSSH server is only required if you want to allow users to connect remotely to your server, but if you would be connecting to other servers, then you need an SSH client installed.

If the sole purpose of your machine is connecting to other servers, then the only required package is the SSH client, and you can do away with the server package as that is only required if you want others to connect to you.

That said, to get started with using Openssh, you need to confirm if your target machine (the server you want to connect to) has an openssh-server package installed and started.

By default, most distros are automatically configured to start ssh automatically, I'll be using Ubuntu as an example, but this should be the same regardless of your distribution.

To verify the ssh server is running, type the following command:

systemctl status ssh

If OpenSSH server is properly configured, you should see output that tells you that it's active (running):

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-03-15 20:39:28 UTC; 10min ago
  Process: 875 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 1103 (sshd)
    Tasks: 1 (limit: 2318)
   CGroup: /system.slice/ssh.service
           └─1103 /usr/sbin/sshd -D

If for some reason, it's not started, start it with:

sudo systemctl start ssh

And that should start it, in some situation, even if it starts, it won't start automatically on the next server boot, you can make sure it does by running by using the following command:

sudo systemctl enable ssh

Once Openssh is started and running, it listens for connection so as to make it reachable to the client. To list listening ports, you can use the following command:

sudo netstat -tulpn | grep ssh


tcp        0      0    *               LISTEN      1103/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1103/sshd

You can see port 22 is open, by default the server listens for a connection on port 22.

You can modify this part in the /etc/ssh/sshd_config file, go ahead and open it:

sudo nano /etc/ssh/sshd_config

Change the port number to whatever soothes, and save.

Connecting To Server Using SSH

To connect to a server from the client (the machine you want to use to establish the connection to the server), you execute the ssh command followed by the hostname or the IP address of the server you want to connect to, for example:


If for some reason you get an error, this is due to the fact that ssh uses the username you are currently logged in with for the connection by default. So, to specify the user you actually want to connect to, you include the username followed by @ symbol and the IP address or hostname, for example...

ssh john@

In the situation whereby the port of the server has been changed to something other than the default port 22, you can specify the actual port by using the -p parameter, e.g:

ssh -p 449 john@

Once you have initiated the command, you will be able to verify the identity of the server, and if the parameters are able to match one another, you will be connected to the target machine.

Once you are connected, you'll be able to run shell command and have the same user permission you are logged in with, so, you can actually administer the system as if you were right in front of it.

Learn How To Simplify SSH Connection

This is just the basics of how it works in general, it should get you up and running!

Related Post(s)

  • How To Access Windows 10 Drive/Folder in VirtualBox

    To access Windows drive or folder in your Guest OS, you first of all, install VirtualBox guest utilities: sudo apt-get install virtualbox-guest-utils You then Add a shared folder by going into: Setti

  • Send Mail with Attachment Using Mutt in GNU/Linux

    Mutt is a powerful text-based mail client for Unix/Linux operating systems. It features color support, message threading, MIME support...

  • Using Pageant To Automatically Authenticate SSH key in Putty

    I can't count how many times I have typed my ssh key passphrase whenever my ssh connection times out, it is so annoying and repetitive. Well, thanks to the putty pageant, you can do that seamlessly.

  • Installing WP-CLI In a GNU/Linux Server

    WP-CLI is a command-line interface for WordPress. It can also be used with ClassicPress, as they are no differences in their usage, maybe just minimal if you are updating or downloading new ClassicPr

  • How To Send Mail To Multiple Addresses Using (mailx)

    In this guide, you'll learn a couple of ways you can send mail to multiple addresses using mailx. mailx is a utility program for sending and receiving mail. I assume you already have mailx command, i

  • Mounting and Unmounting Cloud Storage With (Rclone) in GNU/Linux

    Ever wondered if you could mount your preferred cloud storage as a virtual drive on your system? Thanks to Rclone, you can mount and access different kinds of cloud storage from a file manager, I'll