How do you set up NoMachine on Ubuntu?
Why Nomachine?
On Windows, I love using Chrome Remote Desktop for remote logins, and it works great. But, on Linux, I just have problem after problem with Chrome Remote Desktop, and it's super buggy:
- It stops me from mounting and using plugged in USB disks or drives: Automount when clicking on disks in GUI file manager suddenly stopped working in Ubuntu. ("Unable to mount...Not authorized to perform operation.")
- It stops me from changing my printer settings: Ubuntu 18.04 gnome settings: how to fix "System policy prevents changes. Contact your system administrator" on 2nd user which is already an admin
- I get roughly one usage per reinstall of Chrome Remote Desktop: Can't connect to Chrome Remote Desktop on Ubuntu 18
- etc.
So, I've heard good things about NoMachine and want to give it a shot. But, I want to use key-based authentication and disable password-based authentication for improved security. So, how do I set up NoMachine to do this?
I originally posted these instructions on my eRCaGuy_dotfiles repo here: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/tree/master/NoMachine
If you ever need to ssh in, I've documented my various ssh notes here.
NoMachine Readme
NoMachine is an excellent remote login program, with excellent file-sharing/mount abilities and excellent cross-platform support for Windows, Mac, Linux, iOS, Android, Raspberry Pi, and ARM. It is not open source, but is no cost to use (personal use only--businesses must pay).
https://www.nomachine.com/
Setup
Download:
https://www.nomachine.com/download
To enable key-based authentication to server:
References:
READ THESE!
Essentially, just add your public key to the
$HOME/.nx/config/authorized.crt
file on the server. If the file doesn't exist, create it. Set its permissions to 0600. Here's one example of commands to do that:1) Run from client:
Generate a new private/public key pair from the client; run this from the client:
Copy the public (.pub) key only from client to server; run this from the client; notice the renaming of the file on the destination to avoid conflict with keys already generated on the server:
2) Run from server:
Add public key now on server to proper NoMachine file; run this from the server:
And lastly set this file's permissions to 0600 to enable read/write on this file ONLY for the user (owner) of this file, for security:
To disable password-based login to server:
NB: Do NOT do this until key-based authentication is set up & verified to be working, or else you'll lose the ability to remotely connect via NoMachine, & have to manually fix it remotely over ssh, or locally!
References:
(Not exactly addressing this question, but indirectly helpful in figuring it out)
Note: On Linux, server.cfg is located here: "/usr/NX/etc/server.cfg".
On the server, edit server.cfg (
sudo gedit /usr/NX/etc/server.cfg
) and find this section:Now, just below this commented-out line indicating the default setting:
Add this line to change the setting to allow ONLY key-based authentication:
Then restart the NoMachine server (https://www.nomachine.com/TR11N07362):
Now try to connect remotely using NoMachine with password-based authentication, and you should see the following error in the GUI program:
If you saw the above error you have successfully disabled password authentication logins! Now test your key-based authentication to ensure it still works.
To connect from outside your network
To connect to NoMachine from outside your home, you must either VPN into your local network, or open up port forwarding through your firewall in your modem.
To do the port-forwarding, connect to your modem via its IP address in your browser, and through your settings, map some external port, such as
10000
, to your internal computer's IP and port with NoMachine on it. Those details are for another Q&A sometime...The default port to your NoMachine server is
4000
, I believe. Click on the NoMachine icon in the top-right in Ubuntu, go to "Show the Service Status" --> click "Server Preferences" tab on the right --> see the "Port" there for your NoMachine server.Done.