NX technology, commonly known as NX or NoMachine, is a remote access and remote control computer software allowing remote desktop access and maintenance of computers.[1] It is developed by the Luxembourg-based company NoMachine S.à r.l.[2] NoMachine is proprietary software and is free-of-charge for non-commercial use.[3]

Initial release2003
Stable release
8.10.1 / 6 November 2023; 12 months ago (2023-11-06)
Size28 MB
TypeRemote desktop software
LicenseFreeware
Websitewww.nomachine.com

History

edit

NX's design was derived from the Differential X Protocol Compressor project (DXPC). In 2003, NoMachine's compression and transport protocol NX was created to improve the performance of the native X display protocol so it could be used over slow connections such as dial-up modems.[4][5] Originally targeting Linux-based operating systems, the core compression technology, designed by Gian Filippo Pinzari and announced on the KDE and Gnome development forums,[6] was released under the GNU GPL2 license (NX 1) for Linux servers in 2003, whilst other components such as the NX Server and NX Client programs remained proprietary software.

A number of spinoffs of the NX technology have been developed over the years, such as Freenx[7][8] and Google's Neatx.[9][10] In 2010, the company announced they would be releasing the technology under a proprietary license.[11] The last update to NoMachine's open-source project was released in 2012.[12] In 2012, NX software became NoMachine software, also extending support for remote access to Windows and Mac machines.[13] In 2013, NX finally became closed-source with the release of NoMachine 4.[14][15]

Operating Systems

edit

NoMachine is available for most desktop computers with common operating systems, including Microsoft Windows and Windows Server, as well as Apple's macOS.[16][17] Packages for Linux[18] install on multiple Linux distributions and derivatives, for example, Debian, Ubuntu,[19] Red Hat, CentOS[20] and Fedora Linux. There is also a version which can run on distribution variants for Linux ARM devices, including Nvidia's Jetson Nano[21] and the Raspberry Pi.[22] An app is available which allows users to connect from smartphones and tablets running Android or Apple's iOS/iPadOS operating system.

Functionality

edit

The functionality of NoMachine varies depending on the variant or version of the software. At its core, NoMachine provides remote access to computers and other endpoints as well as their control and maintenance. After the connection is established, the remote screen becomes visible to the user at the other endpoint. Both endpoints can send and receive files as well as access a shared clipboard, for example. For the user connecting to the remote desktop, it is possible to view and stream audio and video content, including in the browser. Specifically for Linux, Terminal Server products were created for organizations aiming to reduce costs by running multiple desktops on the same Linux host[23] and for those seeking to migrate away from Windows-based systems.[24]

In recent years, the functionality of the software has been extended[25] and has been optimized in particular for use in large companies.[26][27] For this purpose, the enterprise variant Cloud Server was developed for remote administration of large infrastructures.[28]

Authentication

edit

From version 4.0 on, when the default NX protocol is used, the login can be via password-based authentication, private key or Kerberos ticket authentication. When NX is configured to send its data by SSH (available only on enterprise-version servers), the following authentication methods are available:

Client to Server

  • NX login as NX user using the NX SSH key and user password-based authentication
  • System login with password-based authentication
  • System login with SSH key-based authentication
  • System login with SSH key-based authentication and SSH key stored on a smart card
  • System login with Kerberos ticket existing on client side

Server to Node

  • Login with password
  • Login with SSH key forwarded from client (e.g. NoMachine Player) via server to node
  • Login with Kerberos ticket forwarded from client via server to node
  • Login with Kerberos ticket requested by Kinit on server host
  • Login with Kerberos ticket requested by PAM module on server host.
  • Login with password to Kerberos ticket requested by PAM module on node host

Legacy technology

edit

NX compresses the X11 data to minimize the amount of data transmitted, and caches data to keep the session as responsive as possible. For example, the first time a menu is opened, it may take a few seconds, but is subsequently almost instant.

NX is faster than its predecessors, as it eliminates most of the X round trips, while dxpc and MLView only compress data. The two principal components of NX are nxproxy and nxagent. nxproxy is derived from dxpc and is started on both the remote (client in X terminology) and local (server in X terminology) machines, simulating an X server on the client and forwarding remote X protocol requests to the local X server.

Simplest setup:[29]

remote clients (xterm, etc.)
            ↕
      nxproxy client
            ↕
         Network
            ↕
      nxproxy server
            ↕
local X server (monitor/keyboard)

nxproxy alone achieves 1:10 to 1:1000 compression ratios,[30] reducing bandwidth, but does not eliminate most of X's synchronous round trips, responsible for most of X's perceived latency.

nxagent, derived from Xnest (similar to Xephyr), is typically started on the remote (client) machine, thus avoiding most X11 protocol round trips. Together with nxproxy (built into nxagent), this setup performs well over low-bandwidth and high-latency links.

Typical setup:[29]

 remote clients (xterm, etc.)
            ↕
  nxagent server side \
  nxagent client side   nxagent executable
     nxproxy client   /
            ↕
         Network
            ↕
      nxproxy server
            ↕
local X server (monitor/keyboard)

On systems with a functional X11 implementation, nxproxy and nxagent are all that is needed to establish a connection with low-bandwidth requirements between a set of remote X clients and the local X server. SSH can be used to establish a secure tunnel between the hosts. NX 3 relies on SSH functionalities and existing open-source SSH software, making it possible to run contemporary Unix and Windows desktops and arbitrary network applications over the Internet in a secured and controlled way.

FreeNX and the various NX Clients are used for setup, handling suspend and resume, secure tunnelling over SSH, and printing and sound.

Other display protocols

edit

NoMachine's NX protocol allow client connections to hosts via Remote Desktop Protocol (for Windows Remote Desktop Services sessions) and remote Virtual Network Computing sessions (most modern general-purpose operating system platforms), as well as XDM.

NX derivatives and forks

edit

Prior to version 4.0, NoMachine released core NX technology under the GNU General Public License, and offered non-free commercial NX solutions,[31] free client and server products for Linux and Solaris, and free client software for Microsoft Windows, macOS and embedded systems.

Due to the free-software nature of older NX releases, the FreeNX project was started to provide wrapper scripts for the GPL NX libraries.[32] FreeNX was developed and maintained by Fabian Franz, but has not announced a release since 2008.[33]

2X Software has developed another commercial terminal server for Linux using the NX protocol.[34]

On July 7, 2009, Google announced their open-source NX server, Neatx, as an internal project.[35] The project is no longer actively developed. Its source code is available under the GNU GPL v2 license.[36]

X2Go is based on the 3.x NX libraries, but is not compatible with other implementations.[37][38] The client and server are released under a combination of GNU GPLv2 or later, and GNU AGPLv3 or later.[39]

Clients

edit

The primary NX clients are the official freeware, NoMachine, and NoMachine Enterprise Client. Several open-source projects can also use the NX protocol but many of these OSS projects do not work with more recent versions of the official NX software.

An OS mature project was Lawrence Roufail's nxc client library, a full library which can be used for other clients to build upon. The nxrun application utilizes this library. As of 2006, the library does not allow suspending or resuming sessions, and uses only JPEG graphics compression.

The kNX project was a proof-of-concept application written by Joseph Wenninger, with plans for it to eventually become a complete NX client to show that an open-source client could be written. Its development was halted before it was completed. In late 2005, Fabian Franz and George Wright began modifying kNX to use the nxc library, but abandoned the project.

More recent open-source efforts include QtNX, which offers full suspend and resume. However, it has been reported as incompatible with the most recent NX libraries.

Nxcl, an update to nxclientlib, the core of QtNX, was completed by Seb James in September 2007, and works with version 3 of the NX core libraries.[citation needed] It also drops dependency on Qt, which prevented nxclientlib from becoming widely used as a cross-platform basis for NX client programs. nxcl provides a library that can be linked to a client program (libnxcl), and a self-contained NX client with a D-Bus API (the nxcl binary). It is available from the FreeNX Subversion server.

Another obsolete (last updated Jan 2013) OSS NX client is OpenNX, described as a "drop-in replacement for NoMachine's [proprietary] nxclient" with full suspend and resume.

Various open-source terminal server projects, such as X2Go, also use the NX protocol. However, X2Go is not compatible with other NX servers or clients.

Remmina, another recent GTK+ remote desktop client project, announced the ability to use the NX protocol in its release 0.8.

Previous X11 compression schemes

edit

See also

edit

References

edit
  1. ^ Vladimir Blagojevic (2019-03-28), "NoMachine – Remote desktop based on NX technology", ITSM daily, archived from the original on September 27, 2022, retrieved 2023-06-14
  2. ^ NoMachine.
  3. ^ Daniel Blechynden (2020-04-03), "NoMachine review—versatile free remote desktop access", TechRadar, archived from the original on March 14, 2022, retrieved 2023-06-14
  4. ^ Slashdot - Proxy Servers Lighten Up X, 2003-09-26, archived from the original on September 27, 2021, retrieved 2024-04-08
  5. ^ Markus Feilner (2007), "FASTER X - Lean terminal services with NX", Linux Magazine, no. 85, archived from the original on October 27, 2019, retrieved 2024-04-15
  6. ^ Gian Filippo Pinzari (2003-03-28), "KDE-devel – NX Project Announcement", marc.info, archived from the original on August 16, 2021, retrieved 2024-04-08
  7. ^ Tom Adelstein (2005-06-06), "Linux in Government: Major Breakthrough in Linux Technology", Linux Journal, archived from the original on April 8, 2022, retrieved 2023-06-14
  8. ^ Tom Chance (2004-04-30), "Interview: NX – Revolution of Network Computing?", OSNews, retrieved 2024-02-05
  9. ^ Markus Feilner (2009-07-09), "Neatx: Google Releases Its Own NX Server", Linux Magazine, archived from the original on October 27, 2019, retrieved 2024-04-15
  10. ^ Rodney Gedda (2009-07-13), CIO - Google Releases Open Source NX Server, archived from the original on May 15, 2018, retrieved 2024-04-08
  11. ^ NX Compression Technology To Go Closed Source, Slashdot, 21 December 2010
  12. ^ NoMachine (2012-05-12), "NoMachine – Fourth Maintenance Release of the NX 3.5.0 Node and Server packages", nomachine.com, archived from the original on June 7, 2012, retrieved 2024-04-08
  13. ^ "NoMachine Announces Free Remote Desktop Control for Windows and Mac", PR.com, 2012-05-26, archived from the original on May 16, 2021, retrieved 2024-04-15
  14. ^ Markus Feilner (2014), "NoMachine 4 ist da", Linux Magazine (in German), no. 11, archived from the original on October 29, 2014, retrieved 2024-04-15
  15. ^ NoMachine (2012-09-25), "NoMachine – NoMachine 4 Release Announcement", nomachine.com, archived from the original on October 7, 2021, retrieved 2024-04-08
  16. ^ "NoMachine is a free and portable Remote Desktop Tool for Windows PC", thewindowsclub.com, 2023-02-20, archived from the original on November 29, 2023, retrieved 2024-04-15
  17. ^ Sergiu Gatlan, "NoMachine for Mac", Softpedia, archived from the original on April 30, 2017, retrieved 2023-06-14
  18. ^ Erik Bärwaldt (2018), "NoMachine remote desktop solution on Linux", Linux Magazine, no. 209, archived from the original on November 25, 2019, retrieved 2024-04-15
  19. ^ Josphat Mutai (2022-07-02), "Install NoMachine RDP on Ubuntu", Computing for Geeks, archived from the original on July 11, 2022, retrieved 2023-06-14
  20. ^ Hitesh Jethva, "Install and Use NoMachine Remote Desktop on CentOS", HowtoForge, archived from the original on March 24, 2023, retrieved 2023-06-14
  21. ^ "NoMachine - Jetson Remote Desktop", jetsonhacks.com, 2023-12-03, archived from the original on December 25, 2023, retrieved 2024-04-15
  22. ^ Emmet (2023-03-01), "Using NoMachine on the Raspberry Pi", PiMyLifeUp, archived from the original on April 15, 2023, retrieved 2023-06-14
  23. ^ "NoMachine Virtual Desktops Help Health Center Cut Costs", PR.com, 2012-03-17, archived from the original on July 30, 2021, retrieved 2024-04-15
  24. ^ Markus Feilner (2006-09-04), High-Speed Terminalservices für Linux und Windows: NoMachine – sanfte Migration und mehr (in German), archived from the original on December 7, 2023, retrieved 2024-04-15
  25. ^ BetaNews Staff (2020-12-23), "NoMachine 7 is a major update to the remote desktop tool", Betanews.com, archived from the original on December 23, 2020, retrieved 2024-04-15
  26. ^ "NoMachine Diamond Access", Diamond Synchrotron, archived from the original on November 11, 2020, retrieved 2024-04-09
  27. ^ "NoMachine CHESS Remote Operations", Cornell University, archived from the original on December 11, 2023, retrieved 2024-04-09
  28. ^ NoMachine Announces the Immediate Availability of Version 6, archived from the original on November 15, 2017, retrieved 2024-04-15
  29. ^ a b "Building and using NX components". NoMachine. 2015-05-22. Retrieved 2015-08-21.
  30. ^ Building and using NX components, NoMachine.
  31. ^ NX Terminal Server and Remote Access Software (product details), NoMachine.
  32. ^ "FreeNX – the free NX". DE: Berlios. Archived from the original on 2013-11-11. Retrieved 2014-02-14.
  33. ^ FreeNX (project page), DE: Berlios.
  34. ^ "2X TerminalServer for Linux Features". 2X. Archived from the original on January 16, 2012. Retrieved 2016-03-30..
  35. ^ "Releasing Neatx, an Open Source NX Server", Open source (World Wide Web log), Google, Sep 2009.
  36. ^ "Neatx", Code, Google.
  37. ^ "X2Go – everywhere@home". 2013-12-28. Retrieved 2014-02-14.
  38. ^ FAQ, X2go.
  39. ^ License information, X2go.
edit