It seems as if the ratio between Systems Administrators and the systems that they must manage is getting higher and higher. At the same time, budgets are getting smaller and smaller. You may have managed to get a copy of Windows 7 out of the budget, but not much else. One way to save both money and aid in the administration of multiple remote systems is with the free and open-source tool mRemote (released under the GPL license).
The mRemote project was actively developed up until late 2008 when it was merged with a commercial, closed-source multiple remote desktop tool called vRD. However, in spite of the project having been officially halted, mRemote is quite mature and has no crippling restriction on its available features like the free version of vRD does.
mRemote supports creating connections with the following protocols:
- Remote Desktop Protocol
- Citrix ICA
- HTTP and HTTPS
Connections using RDP require version 6.0 of the Microsoft Terminal Services Client. Citrix ICA connections require you to download the free ICA Client from Citrix.com. Telnet, SSH, rlogin and RAW connections require the use of PuTTY as an external helper application. All mRemote packages come with PuTTY already included in the files. HTTP and HTTPS connections can be made within mRemote using the Internet Explorer rendering engine. However, you can also use the Gecko (Firefox) rendering engine if you download the free XULrunner.
One of the best features of mRemote is it’s user interface. Anyone who is familiar with Visual Studio or the SQL Server Management Studio will instantly be at home with mRemote.
mRemote uses pinable information panes for all of it’s various information consoles. For instance, the Connections pane is where you manage all of your connection files and folders. The Config pane displays all of the configuration information for the selected connection or folder as well as allowing you to edit the information. If you unpin a pane it retracts into the side of the mRemote console and shows itself as a tab. Hovering the mouse over a tab causes the pane to fly out, just like Visual Studio. The above image shows the retracted “Errors and Info” and “Screenshots” tabs on the bottom of the program’s window.
Just like in visual studio, you can tear panes off of any side and attach it to any other side as well as placing it directly in the center of the window.
To save even more space and allow for more efficient workflows, the remote connection windows themselves can be placed in unpinned tabs for easy fly-out access!
Connections are displayed in panels and tabs. Multiple panels can be created and each panel can contain tabs. Panels and tabs can be seen in the previous pictures. Towards the top of the application screen, the visual element that looks like a tab and are titled “Home” and “Alpha” are actually what mRemote refers to as a panel. Underneath the panel and above the remote display are multiple icons with the title of a connection. Those are referred to as Tabs and are what the remote connection is displayed within. In this way, you can more easily keep track of multiple connections based on the remote connection’s function, location or any other designation you choose. For example, I prefer to have a separate panel for each network and then tabs of each connection on that network underneath.
Creating your Connections
Connections can be created manually, copied form an already existing connection or imported from supported file types. mRemote supports importing connections from Active Directory, .RDP files, a port scan or its own mRemote XML file type. The port scan features allows you to scan an entire subnet for standard open ports that would indicate a VNC, RDP or other supported connection type is listening for incoming connections.
Managing your Connections
Your connection files can be managed via a simple folder system displayed in the Connections pane. However, those folders can have a complex system of inheritance that allows you to propagate common settings to all subordinate connection files. When you select a folder, the Configuration panel allows you to edit all available connection options for all available connection types. When a connection is placed within that folder, the connection file can be set to inherit all options for that connection type from its parent folder or just individual options.
The image on the left displays some of a folder’s inheritable options and the image on the right displays a child connection’s inheritable options.
The ability to inherit options makes creating new connections fast and easy. As an example, folders could be created based on account type (“Domain Admin”, “Accounting Admin”, “Lisbon Power User”, etc.) or computer type (“SharePoint Farm Members”, “Apache Front Ends”, etc.) and all connection files placed within have the ability to inherit username, password, domain, and all other options without tedious manual entry.
Connection files can be exported or saved as vRD CSV, mRemote CSV or mRemote XML files to provide a backup copy or to share with others. mRemote also provides a beta ability to store connection files in a SQL Server database. This allows multiple users to access and modify the same set of connections simultaneously within one database. It should be noted that the SQL Server feature was experimental and your results may vary.
mRemote is Portable!
What can make an already immensely useful utility even more useful? If it’s portable! The mRemote application comes in several different downloadable formats: A Windows Setup file, a binary package, a source package and a portable package. The executable in the portable package is made to store and retrieve its settings from files within its own directory. However, in order to use the various connection types you will need to manually register one dll file each for RDP, VNC and ICA connections to work (simply using regsvr32 at a command prompt). Instructions on how to do that are included in the application.
mRemote offers the ability to create small “macros” within itself that call external applications and pass command line arguments to them. mRemote also offers the use of internal variables that can help when building the argument string. The supported variables are: %name%, %hostname%, %port%, %username%, %password%, %domain%, and %description%. To explain that better, I’ll use the example that is supplied in mRemote’s own documentation.
The example we’ll look at is creating the ability to perform a simple tracert command to any host that is listed in the Connections pane. First you simply navigate to the External Applications management interface and add an instance of an external application. From there you create the display name (the name that will be seen within mRemote), give the path to the executable (in our case simply putting ‘cmd’ will work) and then pass the appropriate commands to the application (“/K tracert %hostname%” in our case).
From there, the new external application macro will be available from the context menu that appears when you right click any connection. When you take into consideration Windows 7’s native support for PowerShell 2.0, the external application feature becomes even more powerful.
mRemote’s features don’t stop yet! There are various other capabilities such as a simple screenshot manager that can be used to take pictures of remote connections and save those files in the Screenshot Manager pane. This can come in handy when documenting your work. SSH file transfer is supported through SCP/SFTP. UltraVNC’s single click is available. There is even a rudimentary port scanner included.
If your company is like mine, you are feeling the squeeze of a tightening budget as well as an increasing pool of systems to maintain. That was one of the reasons I started looking for an application like mRemote. It has helped me to streamline by daily workflow and, best of all, it works on Windows 7. I hope that it will help you out too! You can download the free, open source, mRemote here.