I'm using right now FreeNx in production, and in the past our company has been a NoMachine customer. We use FreeNX on the server and the proprietary but free NoMachine client on the desktops (both Ubuntu and Windows).
The relationship isn't complex, NoMachine had a proprietary product (free as in beer up to 3 users) but releases the back-end stuff as open source. FreeNx is build with this back-end and is always somewhat less polished, and a couple of versions behind the NoMachine server. NoMachine has announced on December 21th 2010 that the next version it's NX technology (NxServer 4) will be close source only.
x2go was another company that build a open source product based on NoMachine open source libs.
Finally, Google has released NeatX, a complete independent implementation of the NX protocol. It's far from complete but usable, and totally open source.
So, recap you needs:
- Security: They all are SSH connections. Tick.
- Efficiency: Right now I'm tunnelling Windows RDP sessions in NX and having better speeds than naked RDP. Tick.
- Free-ness as in speech. FreeNX, NeatNX, tick. NxServer. Fail.
- Free-ness as in beer: NxServer up to 3 users
- Ease of use: NxServer is very easy to setup and administer. Others are worse on the server side. FreeNx is on the official repos.
- Cross-OS client: I haven't found a decent Andriod client. Great clients for all main desktop OSes and a java-based one that can be embeded on a web.
- Cross-Os server: Nope. NxServer can tunnel RDP sessions, but doesn't work on windows.
- Independent and shared sessions: Tick.
On file /etc/xrdp/xrdp.ini add address=0.0.0.0 which is the default xrdp address.
Also you have to permit firewall to listen to connections on port 3389 that xrdp is working on. For this execute:
sudo ufw allow 3389
If that doesn't work either:
- Restart PCs
- Disable firewall (
sudo ufw disable
) on server pc and then recheck (might even need another restart).
In case you missed it, i will list the entire procedure below (which was a pain to assemble). You'll be fine with that if you follow step by step (promise!).
Remote Desktop between any OS's Step-By-Step guide
I. Windows to / from Windows:
Use Windows Remote Desktop software
II. Linux / Unix to / from anywhere
First do the following on the server computer that you will connect via remote desktop:
- Allow other users to view your desktop
- Best to require a password
- service ssh status
- To allow computers to connect with X11 graphics system capabilities as well, you need to
install an X11 server on the computer that is trying to connect (client). So
* for a Windows computer use XMing
* for a Linux Ubuntu computer use XQuartz
IIa. Windows to Linux from terminal with graphics support
- Launch XMing on Windows client
- Launch Putty
* Fill in basic options
* Connection -> SSH -> X11
-> Enable X11 forwarding
-> X display location = :0.0
-> MIT-Magic-Cookie-1
-> X authority file for local display = point to the Xming.exe executable
IIb. (b for better) Windows to Linux with full GUI support. This is what most of you will want.
- install xrdp which uses the remote desktop protocol to present a GUI to the user.
It can provide a fully functional Linux terminal server, capable of accepting connections
from rdesktop, freerdp, and Microsoft's own terminal server / remote desktop clients.
xrdp is the daemon that handles RDP remote desktop access from Windows machines to Linux
- edit the "/etc/xrdp/xrdp.ini" file to include the line:
address=0.0.0.0
right under #background=626x72 line. 0.0.0.0 is the local server address of xrdp
- Restart xrdp service
- allow xrdp port (probably 3389) through firewall
- We also need a VNC server. Install tightvncserver on Linux server machine.
- run tightvncserver (no need to create a view-only password)
- "netstat -lvp | grep vnc" to check out the ports that tightvnc is listening on for
connections
- allow the vncserver port from the firewall: sudo ufw allow #
- allow the xrdp server
- Install xfce4 desktop environment an update to xfce, minimalistic faster and lightweight
sudo apt-get install xfce4
- sudo apt-get install xfce4-terminal : way better than xterm
- sudo apt-get install gnome-icon-theme-full tango-icon-theme : installs icon sets
- Now we modify 2 files to make sure xrdp uses xfce4
* echo xfce4-session >~/.xsession
* secondly we modify startup file for xRDP located at /etc/xrdp/startwm.sh
so it will start xfce4. Replace the last line with
startxfce4
(before it had something which started with a ., but no matter whatever it is, just
replace the last line)
* restart xrdp service: sudo service xrdp restart
- Now you are ready to log into the computer from client using Remote Desktop (mstsc.exe).
Just supply the ipv4 or hostname of the VNC server.
III. *nix to / from *nix
- ssh -X [preferedUserName]@[targetIpv4Address] : -X flag enales X11 forwarding
- accept security certificates from trusted hosts when prompted
IV. Making the connection secure (optional step - applies to any configuration)
VNC & xrdp protocols are not secure which means that they are not encrypted.
To make the connection secure edit the /etc/xrdp/xrdp.ini file so that the address becomes 127.0.0.1. This will be the localhost address of the ssh server. SSH encryption will be used underneath to tunnel the vnc traffic.
- sudo service xrdp restart
- sudo service ssh restart
- pkill Xtightvnc
- tightvncserver
- putty -> Connection -> SSH -> Tunnels
* Source port: 5555
* Destination: localhost:3389
If the above don't work:
- You may need to restart both computers,
- Disable firewall (
sudo ufw disable
) on server pc and then recheck (might even need another restart).
- If above don't work then you have messed up your system, by installing conflicting packages. You have to do manual troubleshooting on that (very unlikely you reach this step if you follow the instructions properly).
Sources and credit:
Best Answer
You might still have another desktop manager in your .xsession config.
I've had a similar issue and this solved it.