A convenient SSH GUI
Safe Passage
Muon/Snowflake lets you manage SSH access via an easy-to-use GUI with a wealth of useful functions.
Many power users believe they can manage connections more effectively from the command prompt, but a graphical interface offers several benefits. Snowflake is a graphically-based SSH terminal that comes with built-in SFTP support. This article describes how to set up secure connections and transfer files with Snowflake.
But first a note: Now that Snowflake has started to gain some traction around the world, the developers have decided to change the name (a time-honored open source prerogative). The tool is now called Muon, but many references to it online, including the official project documentation and even the GitHub page, still refer to it as Snowflake, so I'll call it Snowflake for this article. The documentation will probably update over time, so if you have trouble tracking down Snowflake by the time you read this article, look for Muon and know it is the same tool.
Basics
Snowflake runs on Linux, the BSD derivatives, HP-UX, and Windows; a version for macOS is under development. You only need to install the software on the client. Snowflake requires at least Java 11, regardless of whether you prefer Oracle's proprietary version or the free variant.
Versions 1.0.3 for Java 11 and 1.0.4 for Java 13 are available on the GitHub page [1]. If you already have Java 13 installed, use the newer 1.0.4 version. The existing Java version is revealed by typing the command java -version
in a terminal window.
In addition to an MSI installer for Windows and a generic installer for 64-bit flavors of Linux, the pure Java version is also available, as is a deb package for Debian and its offshoots. The packets weigh in at around 25MB each.
Under Debian and derivatives, you can install the package on your system with apt
, specifying the full path. The package is usually located in ~/Downloads/
, so that the command
<C>sudo apt install <C><C> ~/Downloads/snowflake_1.0-3.deb<C>
will typically do the trick. The command
<C>sudo./snowflake-1.0.3-setup-amd64.bin<C>
runs the generic installer. The application ends up in /opt/snowflake/
.
In both cases, you then proceed to launch the software in a terminal or from the menu. Depending on the distribution, you may need to give the file the appropriate permissions before starting it. This is what the command in the first line of Listing 1 does; you can start the Java package immediately after the download with the command from the second line. In the test, the program behaved identically for all installation methods.
Listing 1
Installation
$ sudo chmod +x snowflake-1.0.3-setup-amd64-bin $ java -jar snowflake.jar
After the first start, you will see a window with a button for new connections at top left. On the right, there are three buttons that, from left to right, end a session, access the configuration, and provide information about Snowflake. Thanks to useful presets, Snowflake's configuration is quite a short process (Figure 1). To the left of these switches, a menu lets you switch between connections.
New Connections
Except for a lot, of white space there is nothing else to see at first. A click on New Connection opens the Session Manager, which follows the same principle as FileZilla. Enter the required access credentials for the remote stations. If required, you can also create folders via New Folder to which you can distribute the computers for a better overview.
To enter a remote host, first enter a meaningful freely selectable name and then the IP address in Host. Complete the User and Password fields with the appropriate information. Local Folder and Remote Folder let you specify the directories that act as the starting point. However, you can leave these fields empty and later manually navigate to the desired starting point (Figure 2).
To authenticate with a key at the remote terminal, enter the private part of the key including the path in the bottom field. In this case, the password field can remain empty, because the software asks for the password for the key before connecting. A click on Connect then connects you to the desired computer.
In the test, where all servers were secured with keys, the connection worked in this way on some machines, but not on others. The solution to the mystery lay in the different protocols used to create the keys: Those created using RSA worked, while those with the ED25519 protocol refused to cooperate.
The difference is in the private key's header. For keys generated with RSA, the top line contains BEGIN RSA PRIVATE KEY, whereas for ED25519 it contains BEGIN OPENSSH PRIVATE KEY. This is currently confusing Snowflake, as can be seen in a bug report on GitHub [2]. Until the Snowflake developers have fixed this bug, you will want to create any new keys with RSA. Converting the key into the format supported by the program did not work in our lab.
Clients and Servers
After opening the connection, you will find yourself in the Files tab of the SFTP-based file manager. On the left, you will see the directory tree on the remote computer, on the right the tree on the client. In this view, you can navigate through directories via the menu; trigger actions such as copying, deleting, renaming, and moving files; or packing and unpacking archives via the context menu. Changing permissions and downloading files is also possible (Figure 3).
Moving files or directories from the client to the server and vice versa is a simple drag and drop action. For actions with a larger scope, you can run them in the background. In the same tab, besides the file manager, there is a text editor, a log viewer, and a detailed search function based on the Linux find
command (Figure 4).
The log viewer is particularly practical, as it opens even logs with a size of several terabytes quickly, making downloads unnecessary. Scripts can be executed via the file manager by opening the context menu of the script file and selecting Run file in Terminal.
If you want to manage another server instead of the client in the file manager, click on the drop-down menu in the right-hand view that contains the path of the client and select New Tab and then SFTP. Now connect to another server stored in the Session Manager or to be newly entered. You can then transfer files between the two servers.
You need root rights on the server for some actions. This also works in the file manager if you configured sudo
on the server in advance. If an action requires root privileges, Snowflake asks if you want to use sudo
. Even the text editor can call sudo
.