Reenvisioning SSH with ShellHub
Starting Up
After running the command to bring up the resources listed in the ShellHub Docker Compose configuration, you'll see lots of Docker-esque output as containers are created and started. After putting the kettle on and coming back a few minutes later, you should be greeted with some logging information, right at the end of the output:
Creating shellhub-v002_emq_1... done Creating shellhub-v002_ssh_1... done Creating shellhub-v002_ws_1... done Creating shellhub-v002_gateway_1 ... done
To check whether the installation was successful, run the following command to see which containers are now running:
$ docker ps
The seven containers that run a ShellHub server are shown in Figure 2. They include a MongoDB container and containers running from images with names such as:
shellhubio/shellhub-gateway:v0.0.4 shellhubio/shellhub-ws:v0.0.4 shellhubio/shellhub-ssh:v0.0.4 shellhubio/shellhub-ui:v0.0.4 shellhubio/shellhub-api:v0.0.4

The next step is adding a user to our shiny, new ShellHub server. From the same directory as in the cloned GitHub repository, run the following command:
$ ./bin/add-user chrisbinnie nothingtoseehere User added: chrisbinnie Tenant ID: fca338ad-8801-4a91-8487-5de263dadbd2
The username in this case is chrisbinnie and the password is nothingtoseehere.
Connecting
The moment of truth has arrived. Open up a browser and navigate to the following HTTP page:
http://localhost/login
Figure 3 shows the slick-looking login screen that awaits.
Figure 4 shows the main window that appears once you have logged in. On the left-hand side are a few options; the rest of the screen shows you the status of devices that are connected to your ShellHub server.
I'll cheat a little here in order to stay focused on the dashboard and the UI. Instead of installing a ShellHub agent (the equivalent of the SSH client) on another device, I'll install it on the ShellHub server itself and then explain what to do with other machines later on.
The process of installing a ShellHub agent is remarkably simple. Click the ADD DEVICE link on the dashboard, and you'll be presented with a curl
command, as shown in Figure 5.

This command essentially passes a tenant ID to ShellHub and then asks the localhost
(the ShellHub server name, which I'll change in a minute) to install the ShellHub agent so that it can be accessed over SSH.
Then check the ShellHub dashboard again to see if the ShellHub agent has been registered. Figure 6 shows that a device is registered to the ShellHub server successfully.

Oh So Pretty
The View All Devices link in Figure 6 lets you open the Devices dialog (Figure 7). The command-line icon in lower-right corner of the Devices dialog lets you open an SSH prompt. As you can see in Figure 7, devices are referenced by MAC address, but you have the option of giving each device a handy nickname.

If you click the little shell prompt icon, you'll be prompted for a username and password. These credentials are for the machine's users directly and not the ShellHub server's usernames.
Figure 8 shows that the browser-based SSH client works well (I'm using Google Chrome on Linux Mint).

Note that the SSHID column in Figure 7 allows you to SSH directly over the command line to a machine connected to ShellHub. Simply click the copy box and then enter the credentials. See the project docs for more on connecting to another device [6] .
From the command line, the connections launched through the ShellHub GUI to devices on the LAN have the following format:
$ ssh <USER>@<SSHID>
For example:
$ ssh linux-user.3c-6a-a7-15-23-7c@localhost
With a little trial and error, you should be able to quickly get used to the format of the SSH command from all popular SSH clients. If you want to connect a device later on but aren't sure of the ID of that ShellHub's agent, the docs suggest running this command:
$ docker exec shellhub agent info
Then look for the sshid
entry in the JSON that is output:
sshid: "namespace.device_name@address"
« Previous 1 2 3 Next »
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Direct Download
Read full article as PDF:
Price $2.95
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Find SysAdmin Jobs
News
-
LibreOffice 7.5 has Arrived and is Loaded with New Features and Improvements
The favorite office suite of the Linux community has a new release that includes some visual refreshing and new features across all modules.
-
The Next Major Release of Elementary OS Has Arrived
It's been over a year since the developers of elementary OS released version 6.1 (Jólnir) but they've finally made their latest release (Horus) available with a renewed focus on the user.
-
KDE Plasma 5.27 Beta Is Ready for Testing
The latest beta iteration of the KDE Plasma desktop is now available and includes some important additions and fixes.
-
Netrunner OS 23 Is Now Available
The latest version of this Linux distribution is now based on Debian Bullseye and is ready for installation and finally hits the KDE 5.20 branch of the desktop.
-
New Linux Distribution Built for Gamers
With a Gnome desktop that offers different layouts and a custom kernel, PikaOS is a great option for gamers of all types.
-
System76 Beefs Up Popular Pangolin Laptop
The darling of open-source-powered laptops and desktops will soon drop a new AMD Ryzen 7-powered version of their popular Pangolin laptop.
-
Nobara Project Is a Modified Version of Fedora with User-Friendly Fixes
If you're looking for a version of Fedora that includes third-party and proprietary packages, look no further than the Nobara Project.
-
Gnome 44 Now Has a Release Date
Gnome 44 will be officially released on March 22, 2023.
-
Nitrux 2.6 Available with Kernel 6.1 and a Major Change
The developers of Nitrux have officially released version 2.6 of their Linux distribution with plenty of new features to excite users.
-
Vanilla OS Initial Release Is Now Available
A stock GNOME experience with on-demand immutability finally sees its first production release.