5 Ways to Remote Desktop on Raspberry Pi (Windows/Linux/Mac)
Using a remote desktop is a very convenient way to control your Raspberry Pi from another computer. This way, you can follow my tutorials on this website (for example) and apply them directly from the same device. In this article, I will introduce you to the 5 best ways to do this.
The easiest solution to remote access a Raspberry Pi with the full desktop experience is to use VNC. It’s included by default on Raspberry Pi OS and works from any computer or smartphone. Other good alternatives include NoMachine, TeamViewer, or RDP.
If you’re looking to quickly progress on Raspberry Pi, you can check out my e-book here. It’s a 30-day challenge where you learn one new thing every day until you become a Raspberry Pi expert. The first third of the book teaches you the basics, but the following chapters include projects you can try on your own.
1. Install XRDP on Raspberry Pi OS
Note: If you want to see all these steps in action, I have a video lesson available for the community members. You can join here and watch it directly if you are interested (with 20+ other lessons for Raspberry Pi and many other benefits).
Introduction
XRDP is an open-source remote desktop protocol server, which allows you to connect to the Linux desktop from any operating system.
If you need to open or redirect access on your router or firewall, know that XRDP uses the standard port 3389.
Warning: This method works on Raspberry Pi OS (bookworm) but doesn’t work on a fresh installation of Raspberry Pi OS (bullseye). You won’t be able to log in. A workaround is to disable auto-login in the Raspberry Pi Configuration tool or use another account (create a new user).
Installation
The installation of XRDP is straightforward as it’s available in the default Raspberry Pi OS repositories.
All you have to do is run the following command:sudo apt install xrdp
Now that XRDP is installed, you can manage it with the usual commands:sudo service xrdp start | stop | restart | status
Are you a bit lost in the Linux command line? Check this article first for the most important commands to remember and a free downloadable cheat sheet so you can have the commands at your fingertips.
But you can also use the Add/Remove Software tool to install XRDP if you prefer not to use the command line.
Connect From Linux
To connect from a Linux PC to your Pi, I recommend using a solution like Remmina.
It is included in the repositories for most distributions, so you can install it with:sudo apt install remmina
"You requested an h264 GFX mode for server 192.168.1.15, but your libfreerdp does not support h264. Please check color depth settings."
So, I had to add it as a shortcut, as the quick connection does not allow defining the color depth.
By choosing GFX RFX in the list, the error disappeared, and I was able to connect.
Here is a screenshot of my configuration if you experience the same issue:
Connect From Windows
The good thing about XRDP is that Windows users already have the client installed. It’s the same protocol that Windows uses to allow users to access Windows servers remotely, so we can use the same tool.
From Windows start the “Remote Desktop Connection” tool from the start menu and fill the IP address:
If you don’t know the IP address, you can read this article that will explain several ways to find the IP address. You can also type “raspberrypi” if there is only one on your network—that’s the default hostname.
Click on “Connect” and you will get the XRDP login screen:
All you need to do is enter your credentials and click OK. Set Session to “Xorg” if you’re not sure what you’re doing. The desktop will then be displayed relatively well.
It's a free PDF guide containing every Raspberry Pi Linux command you should know!
Download now
In my case, the icons were a bit big, so I changed it in the appearance options, but otherwise it was usable immediately.
Connect From MacOS
I was not able to do testing on MacOS, but there are several RDP clients that you can use the same way.
For example, download “Microsoft Remote Desktop” from the App Store, and connect to your Raspberry Pi by specifying its IP address (follow the same procedure as for Windows users once the app installed).
Connect From a Smartphone
You can also use the RDP protocol from a smartphone quite easily.
The application “Microsoft Remote Desktop” is also available for Android and iOS.
So, it’s possible to connect and use it, but don’t expect a great experience, as the smartphone screen is not ideal to control another computer!
If you want to learn more about XRDP on Raspberry Pi, click on the link to read my dedicated tutorial about it.
2. Enable SSH With X11 Forwarding
Introduction
SSH gives you remote terminal access, but not everybody knows that it can also provide a graphical interface. X11 is the main Linux graphical window manager, and you can use SSH with X11 forwarding for remote desktop access.
X11 forwarding over SSH is one way to start an app from a server when connected to it via SSH. In our case, this will launch Raspberry Pi applications from our desktop (so it is not full access to the desktop).
This method could work from a remote location—all you would need to do is to open the default SSH port (22).
For security purposes, remember to limit the allowed IP addresses in this case, and maybe set up additional protections like Fail2ban to avoid any security issues.
Installation
You will need to enable the SSH service on your Pi first. X11 forwarding is enabled by default on Raspberry Pi OS,
The easy way to do this is to open the Raspberry Pi Configuration tool, go to the “Interfaces” tab, and enable SSH:
If you have any problems you can check that X11Forwarding is uncommented and set to yes in /etc/ssh/sshd_config.
I wrote an entire guide about SSH on Raspberry Pi; you should probably read it first if this is new for you.
From Windows
If you are on Windows, you will need these applications:
– PuTTY (download it from the official website) for the SSH client.
– Xming (download it on Sourceforge) for the display window.
Once Xming is installed (the default options work very well), follow these steps:
Once in the console, you can launch a Raspberry application on your Windows computer with the nohup command:nohup chromium-browser &
Replace chromium-browser with the app of your choice.
The application will then open on your computer.
Connect From Linux or MacOS
Using Linux or macOS, SSH access is almost the same.
You’ll use the ssh command from the terminal as the client.
You’ll have to install Xming (download it on Sourceforge) for the display window.
Except you have to log in to SSH by adding an extra parameter:ssh -X pat@192.168.1.15
Obviously, you should replace the command above with your Raspberry Pi IP address.
Connect From a Smartphone
I don’t think it’s possible to use this method from your phone (tell me if you know how).
I’ve already seen people starting an X server on Android to use an android app on their computer, but not the other way around.
3. Remote Access the Raspberry Pi with VNC
Introduction
VNC (Virtual Network Computing) is a system to share a graphical desktop, pretty similar to XRDP. The difference is that you connect to the current session directly, unlike XRDP which creates a new session.
There are many cross-platform VNC servers and clients available (RealVNC, TightVNC, TigerVNC, etc.).
VNC runs on port 5900.
You can NAT this port to make it available from the outside if needed, but it’s not the safest option, consider the next solution listed in this article.
Installation
Like SSH, a VNC server is already installed on Raspberry Pi OS, so we just need to enable it.
To do this, open the Raspberry Pi configuration tool, go to the “Interfaces” tab and check the “Enabled” box on the VNC line.
That’s it, the VNC server is installed and ready to use.
If you’re not using Raspberry Pi OS, you can still install TigerVNC server manually and use the same steps in the next sections.
Connect From Linux
And it’s available in the default repository on most Debian-based distributions:sudo apt install tigervnc-viewer
But if necessary, you get the latest release from the official website, and install it manually.
It's a free PDF guide containing every Raspberry Pi Linux command you should know!
Download now
Then the use of VNC is super simple, just indicate the IP of Raspberry Pi, the username and password, and you’ll be connected.
Connect From Windows and macOS
Installing TigerVNC on Windows or macOS is a bit more tricky, as you need to download the binaries from the Sourceforge website, which isn’t really intuitive.
I have a step-by-step installation guide in my article dedicated to VNC on Raspberry Pi. Click on the link to read more if this is a solution that suits you.
But once installed, it’s basically the same thing as on Linux:
4. Best for External Access: TeamViewer
Introduction
TeamViewer is a proprietary software very similar to VNC for remote desktop use but adds additional features, mostly business-oriented.
For example, TeamViewer facilitates remote access to a machine in another building/city over the Internet.
The easy thing about TeamViewer is that there’s no need to open a specific port for each computer as with previous solutions. By default, TeamViewer connects on port 5938 but can also use ports 80 and 443 if not opened (so it will work natively most of the time).
I’ll give you a brief introduction about TeamViewer here, but if you want to know more, please check my complete guide about TeamViewer by clicking here.
Installation
The installation is not obvious because even if it is mentioned in the documentation of a package for the ARM, it is not present in the Linux download links and there isn’t a Raspberry Pi category.
The download is done from this page. You should be able to open this page from your Raspberry Pi, download the correct version (32-bit or 64-bit) and then install it with the graphical tool.
But if needed, I’ll give you the installation procedure from a terminal, without having to go to their site:
- Get the ARM package for TeamViewer:
wget https://download.teamviewer.com/download/linux/teamviewer-host_armhf.deb
- Install it:
sudo dpkg -i teamviewer-host_armhf.deb
- You will get some dependencies errors, fix them by doing:
sudo apt-get update
sudo apt-get -f install - If you have a TeamViewer account (paid version), you can configure it by doing:
sudo teamviewer setup
- Otherwise, you will need to set a password to connect, like this:
sudo teamviewer passwd YOURPASSWORD
- And then you can just get the Raspberry Pi ID in this way:
sudo teamviewer info
Connect From Linux
On Linux, start by downloading the TeamViewer client from the official website.
Then install it with your package manager or by doing something like:sudo dpkg -i teamviewer_15.25.5_amd64.deb
Start the app via the Start menu or by typing “TeamViewer” in a terminal.
Log in if you have an account.
Then enter the TeamViewer ID from the Raspberry Pi in the Partner ID field and press enter.
It will ask you the password defined previously and connect to the Raspberry Pi in remote desktop.
Connect From Windows and macOS
For Windows and macOS users, it’s the same procedure as above, so I won’t repeat it.
Download TeamViewer, install it, and then enter ID & Password previously set.
Connect From a Smartphone
TeamViewer provides support for its software to Android, iPhone, Windows and Blackberry smartphones. It is, therefore, possible to use the app in the same way to get spontaneous support from anywhere.
5. Remote desktop with NoMachine
Introduction
NoMachine is another remote desktop access tool that you can use with your RaspberryPi.
NoMachine is based on the NX protocol, which was created to improve the performance of the classic X display. Using it is very close to the experience you have with VNC.
If used behind a firewall, please note that NoMachine uses port 4000 for connections from the client.
It is possible to change the default ports in the administration tools of the NoMachine server.
Installation
NoMachine is provided for Raspberry Pi so that you can get the package corresponding to your environment on this page.
Currently, ARMv8 is only for 64-bit systems, so if you don’t have a 64-bit OS, download the ARMv7 version, even on a Pi 4/400.
Download it with your web browser and double-click on the downloaded file to install it.
Or you can do everything from a terminal with:wget https://download.nomachine.com/download/7.7/Raspberry/nomachine_7.7.4_1_armhf.deb
sudo dpkg -i nomachine_7.7.4_1_armhf.deb
Replace the version number with the one you get.
Be patient as the installation may take a few minutes depending on your Raspberry Pi model.
Once complete, the NoMachine icon will appears in the upper-right corner.
Connect From Any OS
Once the installation is complete on the Raspberry Pi, you have to install it on your client computer as well.
Go back to the official site and download, this time, the version corresponding to your computer.
Install the downloaded file and launch NoMachine.
An assistant will start, then NoMachine will automatically detect your Raspberry Pi on the network.
You have to double click on the Raspberry Pi to connect.
It will ask you for your credentials (pi/raspberry or the password you have defined), and you will be logged in.
Connect From a Smartphone
NoMachine is also available for Android and iOS so that you can connect to your Raspberry Pi from anywhere.
I also made a video on how to use this solution with an iPad, you can watch it there.
Video
Subscribe to the RaspberryTips YouTube channel to receive new videos in your feed :
It's a free PDF guide containing every Raspberry Pi Linux command you should know!
Download now
FAQ
Can I use Microsoft Remote Desktop to a Raspberry Pi from a Mac?
Several apps are available in the app store on macOS, including one from Microsoft, named “Microsoft Remote Desktop.” It can be used to access the Raspberry Pi graphic interface remotely from a Mac.
Here is the direct link to this app. Other options are available, but it’s probably the best one.
What’s the best way to remote desktop a Raspberry Pi from anywhere?
If you need to get access to the Raspberry Pi from outside your local network, it’s recommended to use TeamViewer. It uses a protocol that is safe and easy to set up (no port forwarding or firewall rules needed). It’s free for a personal usage.
The other options listed in this article can be set up to work remotely, but it’s more complicated and less secure overall.
Here is a great tutorial that will walk you through this: 3 Easy Ways to Access Your Pi Over the Internet Remotely.
What’s the safest way to remote access a Raspberry Pi?
SSH is the safest way to remote access a Raspberry Pi on a local network, if properly configured. If access to the desktop interface is required, XRDP and TeamViewer are also safe protocols that can be used.
Can I use Microsoft Remote Desktop from a Raspberry Pi?
Remmina is available in the default repository for most distributions (including Raspberry Pi OS). It’s a tool allowing the connection via RDP from the Raspberry Pi to any RDP server (another Raspberry Pi, Linux, or Microsoft server).
It's a free PDF guide containing every Raspberry Pi Linux command you should know!
Download now
Want to chat with other Raspberry Pi enthusiasts? Join the community, share your current projects and ask for help directly in the forums.
Conclusion
So we learned to connect to the remote desktop in 5 ways:
- With the Xrdp package that provides a Windows-like remote desktop.
- With SSH and X11 Forwarding that allows launching an app on the client computer (and not the entire desktop).
- With VNC that enables local access to the Raspberry Pi.
- With TeamViewer which allows among others remote access to the Raspberry Pi.
- With NoMachine that allows local access more elegantly and quickly than VNC.
So, what is your favorite?
In my opinion, VNC and NoMachine are my favorites, with a quick and clean display, without the heaviness of TeamViewer.
It’s because I only need it on my local network, so it depends on your use case.
Another option to consider might be AnyDesk, I wrote a tutorial recently about it, you can click on the link to learn more about this tool.
Whenever you’re ready, here are other ways I can help you:
The RaspberryTips Community: If you want to hang out with me and other Raspberry Pi fans, you can join the community. I share exclusive tutorials and behind-the-scenes content there. Premium members can also visit the website without ads.
Master your Raspberry Pi in 30 days: If you are looking for the best tips to become an expert on Raspberry Pi, this book is for you. Learn useful Linux skills and practice multiple projects with step-by-step guides.
The Raspberry Pi Bootcamp: Understand everything about the Raspberry Pi, stop searching for help all the time, and finally enjoy completing your projects.
Master Python on Raspberry Pi: Create, understand, and improve any Python script for your Raspberry Pi. Learn the essentials step-by-step without losing time understanding useless concepts.
You can also find all my recommendations for tools and hardware on this page.
Hi Patrick,
Thanks for a super analysis — almost perfect (minor negative is that your tip is undated). And yes, VNC was my original plan, but Nomachine (new to me) looks interesting — I will dig into it when I get out of your site.
BUT, is there a way to do any of this TRULY headless (as in the pi never connects to a screen/keyboard from cradle to grave)? …surely a couple of commands in an auto-run-once script could do the trick, no?
I do have a single Ubuntu laptop, but use the GUI (Linux completely destroys Mac/Win for network admin tasks), but I am not capable of writing that auto-run-once script.
Chris
Aaaaaaaah: you said it very clearly — SSH/XII needs no intervention on the pi.
Sorry to have troubled you — will try this route tomorrow.
Chris
In addition to above 5 ways, another way to remote desktop on Raspberry Pi (Windows/Linux/Mac) is by using tools like on premise R-HUB remote support servers. It works on all platforms.
Hi Paul,
I didn’t know this
Thanks for the information
Hi Patrick,
thnx for information.
my favorite is Nomachine but…
how do i solve the problem in Nomachine with the german keyboard?
#Hans
Hi Hans,
I didn’t understand your question, what is your problem?
If you set you Raspbian to use a german keyboard, it doesn’t work via NoMachine? (still in US?)
Thanks for the guide with team viewer. This finally worked for me.
Thanks so much – it got me going. I ended up using TeamViewer (I already manage a few machines, so it was straight forward to add my Pi to that account).
Just two comments, if anyone is interested:
RealVNC is not available on Appstore and on their website directly they seem to offer a paid version (free trial-then buy), so that’s costly.
Teamviewer did work…but only using YOUR instructions. Kudos! If one goes directly to TV website, they offer linux 32b download but that bombs out.
Net/net: great job, much appreciated
Thanks for your feedback 🙂
And yes, I’m now using TightVNC instead of RealVNC
Thanks for guide- it was very easy to follow but I ran into one problem that I cannot figure out.
I have my raspberry pi4 setup as my remote machine and am connecting to it via rdp from my Windows 10 Laptop. My laptop will connect to the raspberry pi and display everything but the raspberry pi does not accept the mouse/keyboard input from my laptop. Any suggestions would be appreciated!
I have the same problem hehe . Did you figure it out already ?
What about Moba Xterm? It has a rdp function in it, hasn’t it?
Yes, it’s more on the client side, but you can use it instead of the built-in tool on Windows.