Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Learn how to resolve common issues quickly
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Learn more about installing the client manually and all advanced configuration options
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
What's new on each release
RPort 1.0.1, 2023-10-25
RPort 1.0.2, 2023-11-07
RPort 1.0.3, 2024-01-05
RPort 1.0.4, non-public release
RPort 1.0.5, June 2024
RPort 1.1.0, August 2024
RPort 1.1.1, non-public patch release
RPort 1.1.2, December 2024
✌️ RPort makes your job a lot easier.
This is a list of all available and upcoming features of RPort.
The current version is 1.0.5
released in June 2024.
Get access to any remote device via a tunnelled TCP and/or UDP connections. RDP, SSH, and any other protocol become securely available for machines behind routers and firewalls.
Any machine with the RPort client installed can act as a bridge, creating tunnels to any other IP address or host. This way you can easily manage routers, printers, switches or NAS systems inside remote networks. No VPN needed.
Tunnels are protected with access control lists to prevent abuse.
Tunnels for HTTP and HTTPS can be accessed via a new built-in reverse proxy. You will always have valid SSL certificates then.
NoVnc integration. Get access to VNC servers directly in your browser.
RealVNC integration to access devices via the latest version of the frame buffer protocol. With RPort and RealVNC Server you can securely access device anywhere without using the RealVNC Cloud broker. Read more.
Web-RDP integration. Connect via Remote Desktop directly from the browser without opening external RDP clients.
Tunnels and their destination can be restricted with fine-grained filters.
Tunnels can be saved for reuse.
The RPort dashboard always presents an up-to-date and comprehensive view of your entire inventory.
Organize your machines and devices in folders grouped by branches, locations, roles, clients, etc.
Get all details about the running operating system, CPU, and memory configuration from the dashboard.
The dashboard shows the update status and all missing updates of the client. (Windows and Linux supported)
Access to clients – scripts, commands, and tunnels – can be restricted to specific user groups.
An audit log stores enables you to follow up on who did what and when. Retrace which command has been executed and what were the results.
Fine-grained user permission model to control which commands a user group is allowed to execute and which remote ports/protocols are allowed to be used.
A basic monitoring shows CPU and memory usage, all running processes and the fill levels of hard disk and mount points.
Alerting and sending of notifications based on monitoring measurements and fine-grained rule sets.
Short command or complex scripts can be executed without a prior interactive login directly from the browser. Learn more 🔖.
Scripts and commands can be stored in a library for later reuse or for sharing with teammates.
You can execute scripts and commands on many clients in parallel, with wide options for target filtering.
Script and command results are streamed to the browser while execution is in progress
On Windows, scripts can be based on cmd.exe (Batch), PowerShell (any version) or bash for Windows.
On Unix, shebangs are supported, so Python, Perl, or any other interpreter installed on the remote system can be used.
With the built-in Tacoscript, you can script even complex tasks with ease. Tacoscript is supported on Window and Linux without dependency on interpreters like Python. Learn more 🔖.
RPort comes with a central server-side scheduler to execute scripts and commands at a given interval.
With the file copy function, you can copy local files from your PC directly to a remote machine.
The RPort database comes with an encrypted table for storing sensitive data like usernames and passwords.
The master passphrase resides only in the memory of the running server. After a server restart, you must unlock the vault manually. This guarantees maximum privacy and protection.
Enrich the metadata of a machine with any information like invoice numbers, serial numbers, vendor support hotline, and many more.
️ RPort comes with wiki pages per remote machine. This allows you to directly attach documentation to a host. Or you can use it as a logbook to share information on the team.
Clients are available for Linux, Windows, Mac with support of many architectures like ARM and MIPs.
RPort consists of a single static binary without dependency to external libraries. Python or other scrip interpreters are not used. This makes RPort suitable for embedded devices. The client can run on Routers, Switches, and IoT appliances. (Linux Kernel and Shell access required)
Clients do auto-registration. You can install the client directly on the remote machine without creating a configuration or a unique id on the server first. This makes mass deployment fast and comfortable.
The server generates pairing codes and ready-to-use installation scripts for Unix shell and Windows PowerShell.
The RPort server is protected by two-factor-authentication. The access to the API and the frontend can be secured by two-factor authentication using standard TOTP or tokens sent by email, webhooks, or pushover.
The server has a built-in user management.
Authentication can be delegated to a reverse proxy. This allows the integration into corporate authentication portals such as Netscaler, Keycloack, Caddy Auth Portal or the usage of Apache Authentication Plugins.
For scripting and developing API clients, per-user token authentication is possible. Tokens can be limited to a read-only scope.
Fast and direct log in to remote machines over RDP or SSH can be initiates directly from the command line with rportcli
. Learn more 🔖.
Clients can have a list of fallback servers. This allows you to implement a highly available setup.
🔥 With our cloud-installer, you can install the RPort server fully automated on all major cloud providers. 🧙♀️ Install now.
You can add tags and labels to clients via the API/UI.
HTTP/HTTPS based tunnels can be accessed by subdomains all on port 443 rather than random ports to achieve easy connectivity in corporate networks where outgoing traffic is limited to well-known ports. Read more.
Release Notes of RPort Server 1.1.0, RPort Client 1.1.0 and RPort Front End/Web UI - 1.1.0-5
Release date: August 2024
Three new APIs have been introduced to support the new Job Status feature area. These are /jobs
, /jobs/{job-id}
and /jobs/{job-id}/latest
. For more information, see the api-docs.
Clients have been updated to support live job output buffer results when using the /jobs/{job-id}/latest
API.
Clients no longer report a potential incompatible server warning message on connection disconnect
Much improved handling of clients re-connecting when already connected (due to SSH connection issues)
Tunnels are now properly terminated by the server on client connection disconnect
Clients no longer report connected tunnels when only loading client-side tunnel configuration
OSVersion and OSFullName searches and filters now correctly handled
Existing user sessions deleted when deleting a user
Large job result buffers no longer cause SSH client server connection disconnects
The client send_back_limit
is currently ignored for job output buffers. The maximum size of job results is 256000 bytes, which is the maximum size of a golang
SSH global request message.
The server is currently rporting an incorrect error message (Invalid Token: too many requests
) when the user no longer has a valid session
Added a new Job Status area at the top level. This makes it much easier to view the results of jobs (aka commands and scripts). If clients are also updated to 1.1.0 then it will be possible to see 'live' job output from the running job when viewing the job details via the Job Status area. Users will only be able to see the status and output of jobs that they have started, unless the server configuration (via show_all_jobs_for_permitted_clients
) has been updated to allow visibility of all jobs for the clients that the user is permitted to manage.
When running commands/scripts, the job status/progress information has been improved
Improved display of permission values
Clients with no IPv4 addresses could cause the client navigation / selection panel to get stuck on the spinner
Session handling has been improved and a number of bugs fixed (although see Known Limitiations)
Various package updates for security fixes
When selecting clients for multi-job execution, empty brackets no longer shown if no group description
Drag and drop in the Library is working again
Removed sessions (either via expiry or admin revocation) show an incorrect message of Invalid Token: too many requests
and the user is not explicitly logged out. However, the user will not be able to interact with the server API any longer. Refresh the browser to be redirected to the login page.
Learn how to use RPort
RPort - an all-in-one remote management suite for heterogeneous environments. RPort addresses three basic needs of a sysadmin:
Fast and secure remote access from everywhere
script execution from a central dashboard
and automation of common tasks
RPort makes efficient automation doable for everyone.
RPort is an RMM software from RealVNC for remote access, remote management and automation of heterogeneous IT infrastructures. From public cloud-based to entirely protected and private.
With RPort you get remote access to all your servers, desktops and devices. Via remote desktop, SSH, VNC, and every other remote access protocol.
RPort is also excellent in automation of common tasks, like installing software, or applying updates. Just execute or schedule the right script from the built-in library. That allows you to execute even complex tasks quickly. You can fully automate tasks like software provisioning or operating system updates.
RPort's remote access function meets the highest security standards. Securely log in to the central dashboard using two-factor authentication.
The dashboard gives you a comprehensive overview of your entire infrastructure. You can access any remote machine from everywhere instantly. A VPN, a public IP address or port forwarding is not necessary. With RPort you can also access remote browser-based user interfaces as if they were on your local network. Tunnels will make remote ports available securely. These tunnels are protected by access control lists, so only you can access them.
All connectivity is achieved through a tiny client agent. RPort comes ready-to-use on Windows, macOS, and Linux. It’s ideal for accessing and controlling any type of device. No matter how small.
Release Notes of RPort Server 1.1.2, RPort Client 1.1.2 and RPort Front End/Web UI 1.1.2-2
Release date: December 2024
None
Upgraded 3rd party packages for security.
Command / Script tags now saved properly.
Prevent UI freeze when choosing fields for client groups and when no existing tags.
You can on your own hardware, public or hybrid cloud. Stop sharing sensitive data with strangers!
No changes from . Only aligning release version numbers.
As per .
Release 1.0.4 was not released as a public release.
Get to know the software via screenshots
RPort - an all-in-one remote management suite for heterogeneous environments. RPort addresses three basic needs of a sysadmin:
Fast and secure remote access from everywhere
script execution from a central dashboard
and automation of common tasks
😎RPort makes efficient remote access and automation doable for everyone.
RPort lets users manage and automate their Windows and Linux devices - desktops, servers, and any device from an intuitive browser-based dashboard. It provides a comprehensive overview of the entire inventory. Users can securely log in to remote systems. Firewall changes or a VPN are not needed.
RPort is made for maximum security. Sniffing credentials is technically not possible. Users always have full control over their data.
With RPort, Sysadmins can get into automation easily. Executing commands on remote machines from a central dashboard are the first step. On a single server or in a group, one by one or in parallel. Even complex tasks can be automated by scripts. A library allows reusing and sharing automation recipes with colleagues. Complete deployment of desktop PCs or servers including all applications and their configuration can be automated.
The underlying reverse tunnelling technology also makes remote access highly secure. Users connect to any remote system over an encrypted tunnel using Remote Desktop, SSH, VNC, HTTP, or any TCP-based protocol. No ports are exposed. No port forwarding or VPN is needed. Secure and proven login mechanisms of the OS are used. Unlike other solutions which operate via their own backdoors.
Users can install their RPort server easily, on-premise, or on any small cloud VM starting at $2 per month. Because the user always owns its RPort instances, no data is ever shared with a cloud provider. The remote client is lightweight and available for any operating system.
The Server and client are static binaries without dependencies, making the installation easy even for inexperienced users.
Release Notes of RPort 1.0.2, release date: 2023-11-07
Alerting on monitoring data can be switched off at server level, resulting in a significant lower memory consumption.
Caution: An upgrade will switch off alerting. Re-enable manually by inserting
alerting = true
into the [monitoring]
section of /etc/rport/rportd.conf
.
The Log-out button works reliably now.
All monitoring alerting rules can be deleted now.
Timeouts on script execution are no longer ignored, which now makes the execution of scripts with an infinite duration possible.
Suggested user passwords are now aligned with the server settings specified in the rportd.conf
.
Adding or removing a user to a user group doesn’t require a password update.
The script and command editor can now handle unlimited long lines.
Real-time command and scripts response streaming on multi-client execution. The UI streams results while the scripts are still running.
UX improvements on alerting rule management.
The inventory view is now using the entire page width, giving you a more comprehensive overview.
Release Notes of RPort 1.0.3, release date: 2024-01-05
On multi-client command and script execution, you can now set a batch size.
The licence status is displayed on the UI.
Improved pagination on long item lists in all areas
Display of command and script results (single and multi-client)
Client filtering now much more reliable
Broken determination of external IP addresses on Windows fixed
Broken TLS min switch in server configuration file fixed
Creating tunnels from the list of stored tunnels on fixed public ports fixed
OS dark theme detection on documentation pages fixed
The rport server is now released as a Debian and RPM package. Add our to your package manager.
Release Notes of RPort Server 1.0.5, RPort Client 1.0.5 and RPort Front End/Web UI - 1.0.5-7
Release date: June 2024
The server will now prevent users who have only been granted run scripts only permission from saving new scripts or updating existing scripts.
RPort clients now have the possibility to use alternative connection profiles. See the rport.example.conf
for more information.
Non-Admin users who have audit permissions will only see changes for clients that they have permission to handle. By default they will also only see audit logs for changes that they made. The new server setting show_all_audit_logs_for_permitted_clients
will allow users to see changes made by other users for clients that they manage. See the rportd.example.conf
for more information.
The RPort Plus Plugin has been completely removed and all the related code migrated to the main rportd
server code base. The plugin is no longer required to run the RPort server.
It is now possible to set default timeouts for command and script execution separately. These defaults will also be provided to the RPort Front End which makes them the default when using the scripts and commands execution panels. See the rportd.example.conf
for more information.
If a client tunnel won't start, it doesn't prevent the client itself from starting. Instead an error is logged to the log file and the client continues to start.
When using the api for client queries, additional sorting capabilities have been added. See the apidocs for more information.
Using dashes in HTTP query urls has been deprecated and underscores should be used instead. Dashes are still supported but their use generates a deprecation warning in the server logs.
API tokens are now hashed and stored using SHA256. The previous bcrypt encryption was too slow when running many scripts using API tokens. Migration of existing tokens to the new hashing algorithm is automatic.
The server no longer returns an error when the notification_scripts
directory does not exist. Instead it returns an empty list.
RPort client installs will no longer try to start the client before a valid config file is available.
Uploading files is more reliable.
When running jobs on Windows clients, processes are terminated cleanly if they exceed their allowed run time.
Various security related fixes.
Using rportd with command line parameters has multiple bug fixes.
'Execution ended' audit logs now include the name of the user that started the job.
Fixed an issue related to updating ACLs on tunnels.
Fixed an issue that would cause a server crash if a tunnel with an http proxy was creates without a specified scheme.
Remote authorisation passwords are no longer included in the audit log
Fixed a bug with mount point details in monitoring info sent to the server from clients
Corrected a field name related to client external ip addresses.
It is now possible to give permissions to users that only allows them to run scripts. Scripts can be loaded, viewed and run but not modified. This is implemented for both individual client and multi-client script execution. There is no change to the existing commands functionality.
The server configuration has been extended to allow default timeouts for both script and command execution. The RPort Front End will now use those defaults in both the command and script execution panels for both individual client and multi-client jobs.
The start animation when first logging into RPort has been removed and the message displayed is now much simpler (just indicating whether no clients available or no clients selected).
The width of the client connection status indicator has been increased to make it easier to see when a scrollbar is present on the client navigation panel.
The minimum length of passwords is now obtained from the server and display when changing passwords in some panels. A future enhancement will ensure this retrieved minimum password length is displayed at most points where a password change is requested.
Client names are now displayed in the audit log, instead of client IDs that can be less meaningful.
Client searches now allow individual fields to be selected for searching.
References to the RPort Plugin have been removed as all related functionality is now included in the main RPort Server code base.
When saving multi-client scripts and commands, it is now possible to save jobs where tags have been specified.
When changing a password due to an enforced password change, the validation messages are now clearly displayed. Additionally, the password length is validated against the server configured minimum password length.
When editing documents, the documents list is correctly refreshed after deleting a document.
Fixed a minor issue with selecting columns when using multi-client execution.
Fixed various issues with the inventory search panel.
Various security related fixes.
Fixed an issue where clicking outside of a modal dialog would close the browser window/tab
Various fixes to file uploads.
Fixed an autoscroll isues with multi-client job results.
Fixed an issue where the option to save as for a script or command wasn't visible.
The default RDP username should now be used as expected.
Various fixes related to Client Groups.
Screens where paging either wasn't working or isn't required have had the paging controls removed.
Release Notes of RPort 1.0.1, release date: 2023-10-25
Monitoring Alerts: You can now trigger alerts sent via email or custom scripts based on monitoring data.
Optional external IP Address determination on the client side by using external IP APIs
SSH fingerprint backwards compatibility
Fixed broken metadata management.
Fixed wrong date on reports for scheduled scripts.
The dark theme has been removed while it's being reworked.
From the Azure Service select "Virtual Machines".
Click on Create > Virtual Machine
Select an existing resource group or create a new one. If don't know what resource groups are, create a new one called rport
.This avoids conflicts with existing resource groups.
Enter rport-server
as the name for the virtual machine.
Select a region near you.
Select "No infrastructure redundancy required" for the availability options.
From the Image drop-down select Debian 11 "Bullseye" - Gen 1
.
You might need to click on "See all images" and type in "debian bullseye" into the search field.
On the size-drop-down click "See all sizes" to get access to the cheap options.
It's a bit challenging to find cheap VMs.
Use the filters to display only VMs with 1-2 CPUs and 0-2GB RAM.
Select a B1
or B1ls
series (~3-7€/month)
If you have SSH key pair, use it. Otherwise, select "Password" as the authentication type.
Select a username other than root
or admin
. For example, superuser
.
Enter a strong password, if you are not using SSH keys.
Do not change the inbound ports.
Proceed to the next step, "Discs". Do not change anything and proceed to next step "Networking".
On the networking setup, select "Advanced" for the NIC network security group" and click "Create New" to create a new security group.
When creating the new network security group, add the following new inbound rules.
Source
Src Port Ra
Dest.
Service
Dest.Port Ra
Protocol
Action
Prio
Name
Any
*
Any
HTTP
80
TCP
Allow
1010
Port_80
Any
*
Any
HTTPS
443
TCP
Allow
1020
Port_443
Any
*
Any
Custom
20000-30000
TCP
Allow
1030
Port_20-30k
Any
*
Any
Custom
*
ICMP
Allow
1040
Ping
Do not skip the ICMP rule. Your virtual machines must respond to ICMP echo requests.👆
Now proceed to all the next steps without changing the pre-filled defaults.
Finally, create the new virtual machine.
After the machine has been created, click on "Go to resource" to get access to all details of the virtual machine.
From the details of the newly created virtual machine, grab the public IP address.
Connect over SSH to the instance using the username you specified during the VM creation. For example, ssh superuser@20.185.220.116
. After the login, type in sudo -i
to change to the root account.
👉 Now proceed to Install RPort on any virgin cloud VM
Get your own RPort server up and running in less than ⏱️ 5 minutes.
We have created a fully automated installer, that converts any cloud-based virtual machine into a high-secure RPort server that is suitable for productive use.
To use the installer, you must fulfil the following prerequisites:
You have an account at one of the supported cloud providers (if not, read below).
You are familiar with SSH key-based authentication, and you know how to connect to a Linux-based virtual machine via SSH. Further knowledge of the Linux operating system is not needed.
It's quick and easy to launch your RPort server. Just two steps: Launch a new instance and fire the installer. That's it.
Select your cloud provider:
Using virtual machines in the cloud is a no-brainer. Select one of the following providers. They are easy to manage for beginners. Unless company policies force you, we do not recommend starting cloud computing with AWS, Azure, or Google Compute. These are highly complex systems with advanced concepts. Getting started is anything but easy. On top, they are pricier. Our three recommended providers are a perfect choice to run a highly secure RPort server at a low price.
Use the fully automated installer to install the rport server in no time.
Select where you want to install your RPort server.
The more clients you manage, the more memory you need. You can roughly calculate ~430 KB per Client.
Rportd does not consume many CPU resources. The smallest CPU on any cloud provider is suitable. Rport performs very well on a Raspberry Pi (armv7 and aarch/armv8)
Rport has built-in monitoring with retention of historical data. Each host writes ~16 MB data per day to the database. You can freely configure the retention period. If you want to manage many hosts with rport and if you require a long retention period, put large disks in your VM.
The fully automated installer will install the rport server on a virgin cloud VM. ✅ Suitable for any cloud vendor. ❎ Requires a dedicated public IP address.
The fully automated installer will install the rport server on any Linux system inside an intranet behind a NAT router. ✅ Suitable for any Linux and the Raspberry Pi. ❎ Uses no public IP address or port forwarding on the router.
A valid is required.
👉
👉
Provider
Locations
~monthly price
Paris, Amsterdam, Warsaw
€5
Nuremberg (Germany), Helsinki
€2
World Wide
€6
Learn how to install the rport server inside your intranet on your own (virtual) server.
Before you start your installation, make yourself familiar with the ports used by rport and their functions. It helps you to design your setup properly right from the beginning.
The port explanation below contains information how to change the ports inside the rportd.conf
file and how to install the server with custom ports right from the beginning.
The server installer script will do all the tedious work for you. In no time, you'll have a perfect server that meets your exact requirements.
Alternatively, read the help message of the installer script.
RPort open-source has been dicontinued 2023-09-20. The RPort installer and the server executable will require a valid license.
This example assumes you and your managed devices are located inside a local network (yellow area).
🧨 Caution You must enter a valid email address that will be used for the two-factor authentication. The email is stored only in your local database. The FQDN of the server must exist on your local DNS or at least enter it to
/etc/hosts
before you start the installation.
💁 Insider tip Use
--totp
instead of--email <EMAIL>
to use two-factor authentication with mobile apps like Google or Mircosoft authenticator.
Security advice: Exporting your licence key to an environment variable via the export command can be insecure because the key could be extracted from the process list by currently logged in none-root users. To prevent this, create a text file, e.g. rportd-license-key.txt
that contains the line export RPORTD_LICENSE_KEY=<YOUR-KEY>
. Load the environment variables from the file with . ./rportd-license-key.txt
and delete the file securely afterwards, e.g. using shred rportd-license-key.txt
.
After the installation, you must import the root certificate of the rport server into your browser and operating system.
This example assumes the server is behind the firewall without a public IP address. The managed clients and the users are on the internet, accessing the server by the public FQDN of the router. Port forwarding is needed for TCP 80,443,20000-20050.
💁 Insider tip The default http(s) ports 80 and 443 are used. If you create the DNS record and the port forwarding before you start the installation, Let's encrypt certificates are automatically generated.
The server installer only support the following Linux versions.
Debian 10 & 11
Rasbian 9 or newer
Ubuntu 20.04 LTS or 22.04 LTS (⚠️ do not use none-LTS)
RedHat, CentOS, Alma, Rocky, Oracle Linux 8
For all supported operating systems, the following architectures are supported: armv6, armv7, aarch64, X86_64.
CentOS Stream 9 is not yet supported due to a missing certbot package.
Client connection port, [server] address = "<IP>:<PORT>"
in the rportd.conf
.
The rport clients aka agents will connect to the server on this port.
We suggest using port 80 because corporate networks usually do not block outgoing traffic on port 80. Plain HTTP is used, no certificates are needed. The encryption happens on application level and client and server handle it autonomously based on the SSH protocol over HTTP.
You are welcome to use any other port, if firewalls allow outgoing connections over this port or if you plan to run the server and all clients on the same intranet.
🔅Use the server installer with --client-port <INT>
to install your rport server on a different port than 80.
Client connection URL, [server] url = "http://<HOST>:<PORT>"
.
This is an optional setting, only used to generate the pairing script for fast and easy client installation. The [server] url
might differ from [server] address
if port forwarding is used. The server might listen on 192.168.1.1:8080
, but your clients will connect to the public DNS of your router, where a port forwarding is active. So [server] url
might be http://rportserver.dyndns.org:8080
, for example.
By default, the server builds the client connection url with the FQDN and the client connection port. You must use this option if your remote systems are located outside your intranet (blue area) but you access the UI only from inside (yellow area) using an internal hostname.
🔅You can overwrite it with --client-url "http://<HOST>:<PORT>"
.
API & UI port, [api] address = "<IP>:<PORT>"
in the rportd.conf
.
This is the port used for HTTPS connections to the dashboard, to connect the rportcli and to send API requests to. We strongly recommend using HTTPs.
By using the default port 443 you achieve maximum accessibility from external networks. Using a different port than 443 is possible. Read the note about the SSL certificates.
Even if you plan to access the user interface and the API only from inside your local intranet, do not turn off TLS/HTTPs. The rport server might have full root access to all clients. Sniffing your credentials over an unencrypted connection inside a local network is trivial. Credentials might give full access to all clients.
🔅 With --api-port <INT>
you can instruct the server installer to use a different port than 443.
The server installer will always enable HTTPS. Switching off encryption is not possible.
Remote access port range, [server] used_ports = ['20000-30000']
in the rportd.conf
. These are the ports dynamically opened for the tunnels. This is where you connect your SSH, RDP, VNC, etc. clients to, to get access to the remote systems of the encrypted tunnel.
The port range determines the maximum concurrently running tunnels. On a small setup, ten thousand might be too much. Please don't hesitate to use just a dozen. You can extend later. 🔅Use the sever installer with --port-range <START>-<END>
- e.g. --port-range 5000-5010
to install the rport sever using just these ports.
As already mentioned, we strongly advise using HTTPs even inside your local intranet. The installer will generate valid certificates for you. You won’t have a hassle with it. But to establish an HTTPs connection without warnings, 👉you must access the user interface or the API by hostname, and not by IP address. If you want to access the rport server from outside your local network, you need a public hostname. Almost all routers support a variety of dynamic DNS services to register a public hostname for you.
The server installer tries to first generate certificates using Let’s encrypt. The user interface can be opened from any browser anywhere without certificate errors. To use Let’s encrypt, two measures must be performed before you install the rport server.
Your public hostname must be registered, and it must resolve to the public IP address of your router.
A port forwarding for port 443 must be active. The external port 443 of the router must be forwarded to the port 443 of the rport server. That’s a requirement of Let’s encrypt. They deny issuing certificates if the validation is not performed over standard ports.
💡The installer has a self-signing fallback. If you prefer not to create port a forwarding on port 443 because perhaps the port is already in use, don’t worry. The installer will create a certificate authority just for Rport and a self-signed certificate is issued. You just need to import the CA into your OS or browser. Learn how.
Which port forwarding you must create depends on your use case. If you plan to manage clients anywhere outside your local network, but you will access the user interface and the tunnels only from inside your intranet, a port forwarding for the client access port is sufficient.
✋Do not mess port mappings. It’s not recommended to use different ports externally and internally. The User interface and the client installer generate links and scripts based on the values of portd.conf
. If you run the client connection port internally on 80, but you map it to the external port 8080, client connections will fail, unless you change the port manually in the client configuration file.
Now it's time to let the magic happen.
This is the simplest way to execute the installer. All default ports (read above) are used.
The help message indicates how to change the ports.
If the server installer can not use Let's encrypt to obtain certificates, a certificate authorities was created automatically. It's all stored in /etc/rport/ssl/ca/export
. All users must import this root CA into their operating system and optionally directly into Firefox.
Transfer the Root CA file to your desktop. If scp is not an option, you can do an insecure download from http://<RPORT-SERVER-IP>:<PORT>/rport-ca.crt
. The installer created a symbolic link, so the certificate is reachable via the built-in web server.
Import CA on Windows
Open PowerShell 7 and import the certificate. Chrome and Edge need to be re-opened afterwards. On PowerShell < 7, download the file with a browser and just to the import step.
Import CA on macOS
Import CA on RedHat-based Linux
Import CA on Debian-based Linux
From the Compute Menu on the left side, select "Instances".
Click on the green Plus sign to create a new instance.
From the availability zones, select a region near you.
On Step 2 "Select an Instance" click on the "Development" or the "Stardust" and select the smallest size available. (Stardust is not available in all regions)
On Step 3, from the OS Images, select Debian Bullseye
.
On Step 4 (Volumes) do not add additional storage.
On Step 5 enter rport-server
as the instance name.
On Step 6 make sure your SSH key is listed, of not abort and go to settings, to upload your SSH public key first.
After the instance has been created, grab the ipv4 address from the summary page of the new instance.
Connect over SSH to the instance using the root
user. For example, ssh root@51.158.191.191
👉 Now proceed to Install RPort on any virgin cloud VM
On the Google Cloud Platform dashboard go to Compute Engine/VM instances.
Click the "CREATE INSTANCE" button.
Enter rport-server
as the name.
Select a region near to you.
Select General-purpose as machine family.
Select N1 (Powered by Intel Skylake) as series
f1-micro 1vCPU,614MB Memory) as machine type ~5.00 USD monthly estimate
"Select Debian GNU/Linux 11 (bullseye)" as boot disk.
On the firewall section enable "Allow HTTP" and "Allow HTTPS".
Create the VM instance by clicking the Create button
The default firewall is not suitable for the RPort server.
Go to VPC Network
-> Firewall
. Click on CREATE FIREWALL RULE
on top of the existing rules. Create the firewall rule as shown on the screenshot. It's important to apply the rule only to specify the target tag rport-server
.
Once the firewall has been created, go back to the settings of the virtual machine. Click on EDIT
on the top. Scroll down to the Network Tags and enter rport-server
. This attaches the newly created firewall rule to the VM. Click on Save
at the bottom.
From the list of VM instances, grab the public ipv4 address of your newly created instance.
Connect over SSH to the instance using the root
user. Usually, you must specify the private key created for the instance or the region. For example, ssh root@143.198.182.188
👉 Follow the generic instructions how to install RPort on a VM.
Learn how to install the RPort server on any public cloud-based virtual machine.
The following guide assumes you are going to install the RPort server on a virgin virtual machine, running Debian or Ubuntu on a public cloud.
✋ Do not use this guide for installing RPort on servers inside an intranet where NAT (network address translation) is used.
To install RPort on a intranet host, follow this guide.
It's always a good habit to apply all pending updates before installing the application. Also, reboot the machine to have the latest kernel with all security updates running.
Log in again using SSH and make sure 👉 you are the root user.
The installation of the RPort server consists of several steps. We compiled a handy script that does everything for you. 🪄 Fire it and let the magic begin.
RPort open-source has been dicontinued 2023-09-20. The RPort installer and the server executable will require a valid license.
⏱️ The script needs approximately 2 minutes to finish. If all goes well, you will get a URL and a random password for the login to the graphical user interface.
💁 Insider tip
You can start the installation with your own FQDN, for example
bash rport-install.sh --fqdn rport.example.com
. The FQDN must exist and it must reolve to the public IP address of your server.If you ommit the FQDN a random hostname of the *.user.rport.io space will be created. You can change it later.
Security advice: Exporting your licence key to an environment variable via the export command can be insecure because the key could be extracted from the process list by currently logged in none-root users. To prevent this, create a text file, e.g. rportd-license-key.txt
that contains the line export RPORTD_LICENSE_KEY=<YOUR-KEY>
. Load the environment variables from the file with . ./rportd-license-key.txt
and delete the file securely afterwards, e.g. using shred rportd-license-key.txt
.
You will be asked for your email address. Your email address is required because two-factor authentication is enabled by default. Tokens are sent via email. Your email address is stored only in the local database of your server.
👉 Point your browser to the URL of your RPort server and log in with the user admin
and the randomly created password. Check your inbox and grab the token for the two-factor authentication.
After successfully starting your RPort server instance, you should
👉 Invite your team
👉 Perform regular backups
Use the Pushover app to receive one-time tokens
RPort supports sending one-time tokens to mobile phones via Pushover. Pushover is a very tiny and versatile app available for Android and IOS.
You can use the app free for 30 days and after that trial it costs ~€6,00. This is a one-time payment. Receiving messages is free.
Install the app on your mobile and create your account. Or go to pushover and create your account there. Each person who wants to receive tokens on the mobile need its own Pushover account.
With a Pushover account, you are allowed to receive and to send messages. Only receiving is enabled by default. To set up the 2FA you need to enable sending too. This must be done only by one person, typically the main administrator of the RPort server.
Go to https://pushover.net and log in to your account (top-right corner). The credentials are the same on the mobile and on the web.
Scroll down to "Your Applications" and create a "new application/API Token". This enables sending messages.
Enter RPort as the name of the application and confirm the terms. A token is displayed. This is your sender token.
You now have
a user key, that is for receiving messages
And an application API token, that is for sending messages.
Log in to your rport server via SSH and execute the following test command. You should receive a push message almost instantly on your mobile.
If the test message was sent successfully, proceed to the next step. If not, double-check you are using the right key and token.
Open the configuration file /etc/rport/rportd.conf
with an editor. Scroll down to the where two-factor is configured, and add the following lines.
Scroll further down to the [pushover]
section and enter your API token and one user key. Restart the rport server with systemctl restart rportd
.
If the server refuses to start, execute the following command to see what's going wrong.
If the server is running after you made the above changes – check with systemctl status rportd
– enter at least one pushover user key to the database.
This will update the user key of the user admin
. The keys of all other users can be updated via the web UI. Changing the database doesn't require a server restart.
Try to log in with your username and password. A message "Verify it's you" should appear, and your mobile should ring.
Learn how to use your own name instead of the random *.user.rport.io hostname
If you want to change the FQDN of a RPort server installed via the cloud-installer the first step is to create a DNS A Record that points to the IP address of your virtual machine.
🧨 Do not use a CNAME record pointing to the *.users.rport.io FQDN. Always use an A-record.
The free DNS service of RPort will delete unused hostnames automatically, and your CNAME-record would become orphaned.
We will use rport-server.example.com
as an example for the new hostname of your RPort server.
Login to the console of your rport-server using SSH and verify the new DNS record has been set up properly. Execute the following two commands. Both must print the same IP address – the IP address of your RPort server.
If you already have certificates for the new FQDN, you can skip this step.
Stop the RPort server first. To generate new free certificates via Let's Encrypt, execute the following commands.
With the new certificates generated, or with your own certificates, open the configuration file /etc/rport/rportd.conf
with an editor. Scroll down to the lines where certificates are configured. Certificates are registered twice. In the [server]
and [api]
section. Change it as shown.
Before (with random *users.rport.io FQDN)
After (example with your FQDN)
The rportd.conf
file contains a setting url =
, that indicates clients who is their server. You must change this setting to the new hostname. If the client url contains a hostname, you must change it. If it contains an IP address, no changes are needed.
Before (with random *users.rport.io FQDN)
After (example with your FQDN)
If you client url consist of a hostname you must change this hostname on all clients too in the rport.conf
client configuration file.
If your rport server runs behind a reverse proxy, can be your own or a service like CloudFlare, pay attention to the tunnel_host setting
. Usually, you must specify an alternative hostname that points directly to your rport server, bypassing all reverse proxies.
If your RPort server is using the default script to send two-factor tokens via email, you must enter the new URL of your server in /usr/local/bin/2fa-sender.sh
too.
Open the script with an editor and enter the URL of your RPort server.
Before:
-F url=https://*.users.rport.io 2>&1)
After (example with your FQDN):
-F url=https://rport-server.example.com 2>&1)
Wildcards are not supported for custom domain names.
Also consider changing the totp_account_name
. When using TOTP as the second login factor, this field is filled. If you chose the FQDN of the server as the value for this field, this value should be changed in line with the new FQDN.
Finally, start the rport server again with systemctl start rportd
. Type in the new https://<NEW_FQDN>
into your browser and check. 🎉
Don't be frightened if clienst appear disconnected. Because the rport server has beend stopped for a while it takes some time to reconnect. But trust, they will all reconnect.
After rportd
is running again and uses the new certificates for the new FQDN, the old certificated should be removed. Otherwise, certbot
would try to renew them too, at worst running into DNS resolution errors since the old FQDN doesn't exist any more.
A proper clean-up can be achieved by running certbot delete
and selecting the old cert via the corresponding number key.
Connect client for remote management
The fastest and easiest way to connect a new client with your RPort server instance is using the pairing service.
Click on the gears icon in the top-right corner.
Click on Client Access
.
Select one of the credentials and on that row click on Install Client
.
Copy the command snippet of the clients' operating system to the clipboard and paste it to a bash or PowerShell console of the machine you want to connect.
Click the refresh icon on top of the client list.
By default, a fresh server installation comes with one randomly created pair of authentication id (aka username) and a password. This is good for securely connect the first client.
The client credentials can be used multiple times. Technically, it's possible to connect all client – even hundreds – with the same credentials. From a security perspective, this is not advised.
The communication is one-way. The server talks to the clients. Clients cannot dispatch any command or action to the server. And clients cannot communicate with each other. If you lose a device with the RPort client installed, a potential wrongdoer can read the client credentials, but he/she cannot really harm the server or other clients.
But a deny of service attack is possible by connecting thousands of new clients until the server runs out of memory. If credentials have fallen into the wrong hands, you should delete them immediately on the server. The more clients are using the deleted credentials, the more work you have to reconnect them with new credentials.
As a rule of thumb, you should create individual credentials for all desktops pcs and laptops and systems that are used by many users. For servers that are accessible only by a small team of system administrators, you can use credentials multiple times. Bear in mind, a system administrator might leave the company and take the credentials with him.
Client credentials consist of an authentication id and a password. The id acts as the username to authenticate the client on connection. You can create numbered ids, or you can use meaningful names. Any string is suitable. The authentication id is not used for the later identification of the client. The client installer script will take the unique system identifier of the operating system and inserts it into the rport.conf
file. Changing the client credentials will not change the client id. On the dashboard, the authentication id does not appear because it's not relevant for the identification of a client.
The client id can be changed at any time by editing the rport.conf
file. If possible, you should avoid changing the client id. Data related to the clients, for example vault data or monitoring measurements, are tied to the client id. This data gets orphaned on changing a client id.
RealVNC Ltd. – the creators of RPort – offers a free pairing service for any RPort server instance. Using the UI, you can click on “Install Client” on the “Client Access” menu. You will get a pop-up like this with a download URL starting with https://pairing.rport.io
and ending with a random string.
The web-based user interface (not the server) takes the client credentials and uploads them over an encrypted HTTPS connection to the pairing service. A unique short random token is generated. Accessing the displayed pairing URL will generate an installer script that installs and configures the client with the credentials previously uploaded. This way, new clients can be installed in less than a minute.
Is it secure? 💬
Yes. The uploaded credentials are not stored to disk on the pairing server. They remain in memory for 10 minutes. No backups are performed.
The pairing scripts accept command line parameters to modify the installation and the later execution of the rport client.
After downloading the pairing script but before executing it type in
sudo sh rport-installer.sh -h
on Linux, to display the current help message
On Windows, type in Get-Help .\install.ps1 -full
to read the help message. If you are asked if you want to update the entire PowerShell help database, answer "no".
Use the browser for VNC connections
Starting with RPort-Server 0.6.0 the NoVNC proxy and the NoVNC JavaScript client is included into the server. You directly connect to a remote VNC server from your browser. No VNC viewer is needed.
Using the NoVNC integration makes your VNC connection fully encrypted, even if the remote VNC server does not support encryption. The VNC "signal" is sent to the encrypted tunnel of rport from your remote machine to the rport server. The server transforms the signal into HTTPS.
Accessing a server via NoVNC requires a VNC server running on the remote host. On Windows, any VNC server is suitable. On Ubuntu Linux, the built-in VNC server called Vino is known to be incompatible with RPort.
After installing a VNC server, activate the following settings:
Turn off encryption. On TightVNC, encryption is not included, but others might have it. Encryption will be added via the RPort tunnel, the VNC server must accept unencrypted connections.
Allow connection from localhost. Most VNC servers by default do not allow connection from localhost. Some call it loop back connection.
If you want to connect to RealVNC servers in a browser, this is supported with the release of noVNC 1.4.0. RealVNC system authentication is supported, and session encryption is achieved via the RPort tunnel.
To use this capability, please change the VNC Server “Encryption” to Prefer On. Either use the VNC Server UI or change the registry key Computer\HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver\Encryption
to PreferOn
. No further adjustments are required.
To access a RealVNC Server from the browser, select VNC
as tunnel type, not RealVNC
, and Enable NoVNC (VNC via Browser)
.
VNC Viewer and the Rport URL integration is required for Multifactor authentication, High-Speed Streaming, Audio and connecting to Virtual mode/Virtual Mode Daemon.
VNC® Server from RealVNC® should ony be used for RPort's browser-based VNC remote access if the RPort Server has noVNC 1.4.0 included. Older versions of NoVNC only supports old (open source) versions of the RFB protocol. RealVNC® has added a number of enhancements to the RFB protocol including encryption and additional authentication mechanisms not supported by NoVNC. ⛔ It is not recommended to make any configuration changes to VNC® Server from RealVNC® to achieve NoVNC 1.3.0 compatibility, like disabling security, using “VNC Password” authentication and setting protocol version to 3.8. 👉 Using the RPort/VNC® Viewer from RealVNC® integration is recommended. .
Get your RPort server up and running in less then 5 minutes ⏱️ for less than 3€ per month 🤑.
Log in to your Hetzner Cloud Console.
Select an existing project or create a new one.
On the left menu select "Servers" and click on "ADD SERVER".
Select a location near you. Hetzners connectivity is excellent. Servers in Finland or Germany are suitable for any customer in northern or Western Europe.
For the OS IMAGE select Debian 11
.
Select "Standard" as type and "Network (CEPH)" as Storage Type. CEPH adds high availability to your server. Read More.
Select the smallest size "CX11-CEPH".
Do not add extra volumes.
Do not add a network.
Do not add a firewall.
Do not add additional features.
If you have an SSH key pair, add your public key. Using a traditional password for the log-in is possible, but less secure.
Enter rport-server
as the name for the virtual server.
Click "Create & buy now"
From the list of servers, grab the public ipv4 address of your newly created server.
Connect over SSH to the instance using the root
user. If you have created the server without an SSH public key, look for an email with the root password. If you log in with a password, you are forced to change the password on the first login.
👉 Now proceed to Install RPort on any virgin cloud VM
get your RPort Server up and running in less than 5 minutes on your own EC2 instance.
Do not install the RPort server on an existing instance where other applications are already running. You will very likely create conflicts.
Because RPort has almost no dependencies, it will run flawlessly on any halfway modern Linux. We recommend using Debian 11 Bullseye. Debian is lightweight and secure.
Log in to your AWS console, go to ECS and select your preferred region.
Click "Launch Instances" and type Debian Bullseye
into the search bar.
Click on "N results in AWS Marketplace"
Look for the official Debian logo and select Debian 11
provided by Debian.
The RPort server doesn't require a lot of CPU, disk, or memory resources.
Selecting a t2.micro
instance is perfect.
✋Do not launch the instance yet. Click "Next: Configure Instance Details".
On "Step 3: Configure Instance Details" you don't have to change anything. Take over all the pre-selected defaults. Click "Next: Add Storage".
On "Step 4: Add Storage" you don't have to change anything. 8 GiB is fairly enough disk storage. Take over all the pre-selected defaults. Click "Next: Add Tags".
On "Step 5: Add Tags" you don't have to change anything. But feel free to add tags to keep your ECS instance well organized. Click "Next: Configure Security Group".
On "Step 6: Configure Security Group" setting up the security group is crucial. Enter the following settings.
Type
Protocol
Port Range
Source
Description
SSH
TCP
22
0.0.0.0/0
SSH
All ICMP -IPv4
ICMP
0-65535
0.0.0./0, ::/0
ICMP PING
HTTP
TCP
80
0.0.0./0, ::/0
HTTP
HTTPS
TCP
443
0.0.0./0, ::/0
HTTPS
Custom TCP
TCP
20000-30000
0.0.0./0, ::/0
RPort Tunnel Range
Do not skip the ICMP IPv4 rule. Your server must respond to ICMP ping echo requests. Otherwise, the automated setup of DNS and SSL will fail.
After creating the security group click "Review and launch".
Don't worry about the warning "Your security group, RPort Server, open to the world. That's intended.
Now click "Launch" to launch the instance. On the last step select which SSH keys to use. The decision is up to you. Finally, launch the instance.
From the list of instances, grab the public ipv4 address of your newly created instance.
Connect over SSH to the instance using the admin
user. Usually, you must specify the private key created for the instance or the region. For example, ssh -i .ssh/ec2-ohio.pem admin@18.221.7.172
After the login, change to the root account by typing in sudo -i
.
👉 Now proceed to Install RPort on any virgin cloud VM
Log in to any server from everywhere via SSH or Remote Desktop
To log in to a remote system located behind a firewall or NAT router, you need a tunnel.
Select the client you want to access, and click on the green button ADD TUNNEL
. Depending on the operating system, the dialogue is prefilled with defaults you very likely would like to use. For Windows, an RDP tunnel is suggested, and for Linux SSH is used as default. The tunnel will be protected with an access control list that gives access only to your current IP address. This ACL is a second layer of security. Valid login credentials are still required.
By clicking ADD TUNNEL
the connection is created instantly. Now click on the LAUNCH TUNNEL
icon and your default application for RDP or SSH opens the connection. From now on, use the username and password of the system you already have.
For RDP, a configuration file for the remote desktop client is generated and downloaded. Look at the downloads of your browser and double-click.
Get access to any remote TCP port
Use tunnels to access remote servers and devices over SSH, remote desktop or any other TCP-based protocol. The tunnels are reverse tunnels initiated by the remote side. That means the IP address of the remote system doesn't matter and the remote side doesn't open any additional ports. The tunnel is created through the HTTP protocol. As long as the remote client is allowed to access the internet via HTTP, you can create tunnels.
Select a client on the left side, and click on it. Select the tunnels tab.
Click the Add Tunnel
button.
Select the service you want to access on the remote client.
After the tunnel is created, the remote port – for example the port 3389 of the remote desktop – becomes available on a random port of the rport server. If you would like to use a specific port instead of a random, you can do so.
Usually, only you intend to use the tunnel. Therefore, your current public IP address is prefilled into the access control list (ACL). If you intend to enable public access to a web server inside an intranet, for example, you can switch of the ACL completely.
If you would like to keep tunnels alive, even they are not actively used, unselect the "Close tunnel after inactivity of N minutes" option.
Optionally, you can close (destroy) the tunnel even if it's still in use after a given period.
After the tunnel has been created, you can use it in different ways. The fastest and easiest way is clicking on the "Launch Tunnel" icon.
Depending on the selected protocol (scheme) your browser will launch the application registered as default application (handler) for that scheme. For example, on Linux and Mac desktops, all links with a ssh://
scheme will be opened in a terminal that automatically starts the ssh client. You can achieve this behavior on Windows too. Learn how.
Remote desktop connections will not directly open from the browser. Clicking on the "Launch Tunnel" button triggers the download of an RDP configuration file. This file contains all details for the connection. Just double-click on it. On Windows and Mac the Microsoft Remote Desktop opens and connects you. On Linux Remmina should open. If not, make Remmina the default application for *.rdp
files.
A tunnel consists of two ends. On the remote side, it ends on TCP port of a rport client. (Read below if the tunnel should not end on the rport client.) The other end of the tunnel ends on the rport server on an arbitrary port, either randomly selected or specified manually. But generally the tunnel does not end on the default ports assigned to the protocol, like 22 for SSH or 3389 for RDP.
On the above example, a tunnel is created to the SSH port of a remote Linux server. The rport server has tied the other end of the tunnel to the port 29304. Let's say your RPort server has the FQDN rport.example.com
. To access the remote Linux server via SSH use ssh -p 29304 user@rport.example.com
.
If you want to connect the remote desk client to the public end of a tunnel, specify the port after the server name, separated by a colon.
A so-called service forwarding allows you to access resources on a remote network where the rport client is not installed or cannot be installed. A typical use case is getting access to configuration of routers, switches and printers. But a service forwarding is also used to access SSH or RDP on servers, where the rport client cannot run. Any rport client can act as a bridge, creating a service forwarding to external TCP ports.
Look at the example to understand how it works.
The rport client runs on a host called ITXC
located in a 192.168.249.0/24
subnet.
The tunnel will create a service forwarding for the RDP port to a neighbor server with the IP address 192.168.249.33
.
The service forwarding will be stored in the library. Using this feature, you and your teammates can re-launch the service forwarding with a single click, without entering all the details again.
Starting with RPort 0.5.0 the rport server comes with a built-in HTTP reverse proxy. This reverse proxy can be activated for all tunnels using the http
or https
scheme.
A typical use case is accessing web-based configurations inside an intranet. You could access any TCP port without a proxy with previous versions, but the new proxy option brings two significant advantages:
All communication from your browser to the end of the tunnel on the rport server is encrypted using HTTPS with valid certificates that doesn't confuse users with warnings.
If the tunnel points to an HTTPS target with invalid certificates, the proxy puts valid certificates on top, avoiding warnings and unsecure communication.
RPort servers >= 0.5.0 installed with the automated installer script and the hosted version have the reverse proxy function enabled by default. If you have upgraded from older versions, read how to enable the function.
❗The proxy will always listen on a secure HTTPS port on the public side. Using the proxy without encryption is not supported.
On the creation of a tunnel, just activate Enable HTTP Reverse Proxy
. 👀Pay attention to the optional host-header. Many web servers use so-called virtual hosts. If the connection does not specify the right host – the name of the site you want to access – the connection might fail, or you land on some default site. Use the domain that you would use to access the site without a tunnel as host-header.
The below example shows how to access the web-based configuration of a router through a tunnel. Because without a tunnel, you would access the router by its internal host name fritz.box
this name is used as host-header.
After the tunnel is created, the "exposed port" is where the proxy listens. All requests are forwarded to the end of the tunnel. Clicking the "Launch Tunnel" icon will open a new browser windows or tab on the exposed port.
Starting with RPort-Server 0.6.0 the NoVNC proxy and the NoVNC javascript client is included into the server. You directly connect to a remote VNC server from your browser. No VNC viewer is needed. Read more
Use the browser to access the remote desktop
Starting with RPort-Server 0.6.0 the Guacamole Server and a pure JavaScript client is included into the RPort server. You directly connect to a remote desktop or terminal server from your browser. No desktop app is needed.
Using RDP via browser, your RDP connection fully encrypted.
Use the VNC® Viewer from RealVNC® desktop app to connect to VNC® Server from RealVNC® or any VNC server
Starting with RPort version 0.9.0 an integration with VNC® Viewer from RealVNC® is built-in.
On the "Add tunnel" dialogue, select "RealVNC". Port 5900 is used by default. Change only if needed. Start the tunnel with the ADD TUNNEL
button.
Once the tunnel has been created, click on the Launch Tunnel
icon.
If you do this for the first time, your browser will ask for a confirmation. You must approve the browser shall open a desktop app. Click Open
. If you plan to use VNC® Viewer from RealVNC® often, also activate the checkbox "Always allow ..."
Done! VNC® Viewer from RealVNC® should open and connect you to the remote system.
If your version of VNC® Viewer from RealVNC® does not support browser integration, start VNC® Viewer from RealVNC® manually. On the list of tunnels, click the Copy to clipboard
icon. Put your cursor in the address bar of the viewer and paste from the clipboard. Hit enter to start the connection.
On the top right corner click the green "Create" button and click on "Droplets". You are asked some questions about your new droplet.
On "Distributions" select "Debian 10 x64".
For the plan select "Basic".
For the CPU options select "Regular Intel with SSD". (We don't need a high-performance droplet.)
Select the smallest VM (1GB/1CPU(25GB SSD(100GB transfer) ~$5/Month
Do not add extra block storage.
Select a data center region near you.
Don't change the default settings of the VPC network.
Either select an SSH Key for the authentication or choose authentication by a password.
Enter RPort-Server
as the hostname for the new droplet.
Optionally add tags or assign the new droplet to a project.
From the list of droplets grab the public ipv4 address of your newly created instance.
Connect over SSH to the instance using the root
user. Usually, you must specify the private key created for the instance or the region. For example ssh root@143.198.182.188
After the login, install the curl command because it's a prerequisite for all further steps.
Add an extra layer of security to your account
The more devices you manage with RPort the more powerful the RPort server becomes. If an unauthorized person get access to it, this person might take over partial or full control over your infrastructure. Getting access to your machines via RDP or SSH always requires login credentials of the operating system. But if you have scripts and command enabled, full control might be possible from the RPort dashboard.
Enabling two-factor authentication is therefore recommended. It prevents unauthorized usage of the RPort server if you or your teammates use weak passwords or passwords are stolen.
With 2FA enabled, you will receive a one-time token after the regular log in.
The RPort server supports four two-factor-authentication methods
Sending the second factor, a one-time-token, via email using an SMTP server.
Handing over the token to a script, and you implement your own sending mechanism.
Using a rfc6238 one-time-token generate by standard apps like Google or Microsoft authenticator.
Using email is free of cost, but the protection is weaker compared to a push message. Think of a lost or stolen laptop. If the laptop is not fully encrypted, the wrongdoer will have access to RPort and the email account. The 2FA is useless. If you select push messages for 2FA the wrongdoer must get access to the laptop and the mobile phone. And nowadays, mobiles are protected biometrical, so accessing the token is not that easy.
Enabling 2FA and the method how token are sent, is a global setting. You can not enable or disabel 2FA per user. All users must use the same token delivery method.
👉 Use email for 2FA
Starting with rportd version 0.3 (late August 2021) all rport cloud installations have two-factor authentication via email enabled by default. Emails are sent via a free public service. This is good to start with a secure setup right from the beginning. The service comes without warranty or promised availability.
If you have installed your RPort server manually, and you want to use the free token service, create the script with the following content.
In your rportd.conf
insert the following lines to the [api]
block.
If you have upgraded your RPort server from an older version, you might need to install the Guacamole proxy manually. We provide tiny Debian/Ubuntu packages for fast and easy resolving of the dependency. .
VNC® Viewer from RealVNC® desktop app version 6.22.826 or newer must be installed on your desktop. Download the latest version from .
Older versions do not implement a URI handler. For older versions, you can still use a copy and paste fallback approach. .
On the remote side, the VNC® Server from RealVNC® must be licensed with a VNC Connect Enterprise subscription with Use for more information on VNC Connect, or to take a 14 day Enterprise free trial. NOTE: RealVNC® Cloud connections cannot currently be used by RPort.
👉 Now proceed to
Sending the token via the free push service . (required an app on your mobile)
👉 for 2FA (recommended)
⚠️ If you plan to use RPort permanently and in a productive environment, stop using the free service. It's highly recommended using either your own SMTP server or switching to .
The free email service triggered by the script /usr/local/bin/2fa-sender.sh
on your rport server submits the email and the token of the user over encrypted https to a web service operated by . Email addresses are not used for any other purpose than dispatching the two-factor token. Email addresses are not stored.
Install your RPort server on the Vultr cloud
On the Vultr desktop, select Products
and click on the instance tab
.
Use the Plus sign on the right side to create a new instance. Click on "Deploy new server".
Select a region near you.
Choose the smallest size available, that will cost you 5$USD per month.
Do not add any additional features.
If you haven't uploaded your public SSH key yet, do so. Vultr does not support log in via password.
After the instance has been deployed, grab the public IP address from the list of instances.
Log in to the instance using SSH and the root user, for example, ssh root@45.76.82.9
.
Vultr installs the Exim Email-Server by default. It's not needed for RPort.
🧹 Keep your system tidy and uninstall it with apt purge -y exim4-*
.
By default, new instances are deployed without a firewall. That means all connections except SSH are blocked. You require a specific firewall for the RPort server.
Add the following rules
Accept SSH 22
Anywhere 0.0.0.0/0
Accept TCP(HTTP) 80
Anywhere 0.0.0.0/0
Accept TCP(HTTPS) 443
Anywhere 0.0.0.0/0
Accept TCP 20000-3000
Anywhere 0.0.0.0/0
Accept ICMP -
Anywhere 0.0.0.0/0
👈 Do not skip this rule!
Drop any 0-65535
0.0.0.0/0
Finally, click on Linked Instances
, select the rport server and link it to the new firewall by clicking the plus sign.
👉 Now proceed to Install RPort on any virgin cloud VM
Change clients names and add more tags
Using the pairing method, you are not asked to give the client a name. The installer uses the local short hostname of the operating system to create the initial configuration.
Furthermore, a client gets two tags by default. The current country and city taken from the current public IP address. This might not be accurate and you may want to delete or change it.
If you want to change the name of a system, you must do this in the rport client configuration file. The configuration files is
/etc/rport/rport.conf
on Linux
C:\Program Files\rport\rport.conf
on Windows
Open the file with a text editor. Scroll done some lines. You will find the setting name = "<SOME-NAME>"
.
Change the name to your needs.
Just a few lines below the name, you'll find the tags. Change them to your needs and save the changes.
After any changes to the configuration file, you need to restart the client.
On Linux, execute systemctl restart rport
.
On Windows use the service manager or from a PowerShell console execute:
restart-service rport.
If you prefer the old cmd.exe console, use
net stop rport
and net start rport
.
Use the built-in encrypted key-value store to securely share data with your team
The rport server has a built-in key-value store based on an encrypted sqlite database. A passphrase – the so-called master key – is needed for encryption and decryption. This master-key resides only in the memory of the rport server and is not stored on the hard disk or any other permanent storage.
Only the values of the key-value store are encrypted. Keys are stored plain text.
After a fresh installation, the vault needs to be initialized.
Learn how to use any rfc6238 compliant token generator, e.g. Google or Microsoft authenticator
To change between the different two-factor-authentication methods, you must open the configuration file locate on your rport server at /etc/rport/rportd.conf
with a text editor.
Scroll down and look for the examples of TOTP. Remove the comment (hash) signs so your configuration looks like the sample below:
👉 Very likely, you will have some other 2fa default method enabled. You must disable it. Look for the line two_fa_token_delivery = 'smtp'
or two_fa_token_delivery = '/usr/local/bin/2fa-sender.sh'
. Put a comment (hash sign) at the beginning of the line to disable it.
After having done the changes, restart the rport server by executing systemctl restart rportd
.
Now open the user interface in your browser and login in with username and password. You will be prompted to scan the QR code with your authenticator app, or you can copy the secret to your desktop app. The secret is displayed just once.
From now on, you must always enter your username, the password and a token generated by the authenticator app.
Select "Cloud Compute" as server.
Select "Debian 11 x64" as server type.
Finally, enter "Rport Server" into the hostname input field and click the blue button Deploy now
.
On the main products' dashboard, select the firewall tab and click on Add Firewall Group
.
Name the firewall group RPort Server
and click on "Add Firewall Group".
On the ipv4 rules, use the plus sign to add rules.
On Windows always use a text editor that supports UTF-8 and Unix Line Breaks. is ideal. The windows built-in notepad is not the best choice.
Put your clients into groups for a better overview
To create a client group, navigate to Settings
, and select Client Groups
.
Click on the button ADD GROUP
.
Enter the ID of the new group. (This will be the group name). This ID will appear in the client list on the left side. We will use the id "Fileservers" in this example. Spaces are not allowed in the group ID. Optionally, you can enter a description for the group.
Next is adding at least one filter on the members tab, that determines which clients are the members of the group. You can use many criteria. The most command one is the client name.
You can add individual clients to the group by ticking on the checkboxes. Using wildcards is also supported. So, a filter could be "Hostname is E*
"
With the above example, any new client whose name stars with "E" or "F" and whose IP address starts with "10" will automatically become a member of the group.
Learn how to open SSH connections directly from the browser
RPort and your browser will open links to ssh://user@remote.example.com
with the default application for that URL scheme. Windows does not have any default application assigned. To do so, follow the guide below.
Make sure you have OpenSSH installed on Windows 10. Open a terminal (cmd.exe or PowerShell) and type in shh -V
. You should get an output similar to
If the ssh command is missing, execute the following command on a PowerShell.
More info here
An ssh link follows this syntax, ssh://<username>@<host>:<port>
but open ssh expects a different format. Download the PowerShell script ssh-protocol-handler.ps1
to some directory, for example to %LOCALAPPDATA%\ssh-protocol-handler.ps1
.
You can do this on the PowerShell with the following commands.
Test the script by executing .\ssh-protocol-handler.ps1 ssh://user@127.0.0.1:22
. It doesn't matter if you have a local SSH server. It's just for testing the URI gets translated into the correct PowerShell command.
Download the ssh-protocol-handler.reg
registry setting file. Adding it to the registry will register the above script as a protocol handler for ssh://
links.
You can do this in the PowerShell with the following commands.
If you download the script manually, replace <LOCALAPPDATA>
by the path where you stored ssh-protocol-handler.ps1
Open the windows settings. Go to "Apps & feature -> Default Apps", scroll down and click on "Choose default apps by protocol".
Now type in an SSH Url into the URL bar of any browser, for example ssh://user@example.com:2222
. A PowerShell windows should open trying to connect you.
From the user administration, you can create new users and user groups. A new group is created by typing in the group name while creating or updating a user. A new user group comes without any permissions.
By default, a user who's not a member of the Administrators group can't do anything with rport. From the inventory, you can assign a host to none-admin users. This enables the users to execute any action on the host.
Starting with RPort version 0.9.0 assigning a client to a user will not give only minimal rights such as searching for clients and viewing their inventory. For any further action like creating tunnels or executing scripts, group permission is needed.
RPort version 0.9.0 has introduced user group permissions. To allow certain actions, you must give permission to a user group.
If two or more groups are assigned to a user and groups have contra dictionary permissions, the authorization wins over the denial.
Example: If a user is a member of the groups Red and Blue, and Red allows script while Blue denies it, script will be allowed.
Keep in mind, that client permission is also needed. If a user is a member of a group with scripts unlocked, the user can execute scripts only on the assigned clients.
Starting with RPort version 1.0.0 extended user group permissions are enabled always, and they can't be turned off. That means, enabling tunnels or commands permissions for a user group provides optional configuration on the tunnels or command tab. Checking the tunnels or commands check box on the base tab will give unrestricted permissions to tunnels or commands because the default permissions for both are to allow everything.
Having the command's checkbox enabled will enable command execution for the user group. By default, all commands are allowed. By enabling the toggle, fine-grained command permissions can be set up for a user group.
The Allow and Deny-List consists of regular expressions. Deny rules are checked first. If the deny rules are empty, any command that matches the allow rule will be allowed.
The below example means:
The user group can execute the exact command sudo reboot
.
The group can restart any service.
The group can execute any command that contains the keyword hostname
.
Executing systemctl ssh restart
will be denied because the deny rule matches first.
Having the tunnels checkbox enabled will enable tunnel creation. By default, all tunnels are allowed. Optionally, you can create advanced rules that apply to the tunnel creation. Navigate to the Tunnels
tab and enable the toggle. Any value that you enter will become a mandatory setting for the user group when trying to create a tunnel.
Not filling one of the input fields means not restrictions apply. E.g., if you leave “Bind port on the rport server …” blank, the user group is allowed to create tunnels using any port.
With the settings shown in the below example, the user group is only allowed to create tunnels for RDP and SSH on the TCP ports 22 and 3389. Any other tunnel that's not matching these rules will be refused.
Preparation before installing the RPort server
Before installing RPort Server, take five minutes to watch this video. Good preparation will save you a lot of time later.
In this video you will get a recommendation for the best practises so that you can test RPort quickly and easily.
We will compare a cloud installation with an on-premises installation.
There will also be a discussion of the pros and cons of server installation on a dedicated virtual machine versus installation on a general purpose server.
In addition, we will take a look at the disadvantages of a Docker installation.
And finally, we are going to say a few words about reverse proxies.
RPort Server installation on cloud
The video shows how to install the R-Port server on a fresh virtual machine dedicated to running only the R-Port server.
The virtual machine needs a direct connection to the Internet via its own public IP address.
For installation on servers behind network address translation, please see the dedicated video.
This tutorial is suitable for a server installation on
Amazon web service (AWS)
Google Compute (GCP)
Hetzner Cloud
Vultr
Digital Ocean
Mircosoft Azure
any other cloud provider
any VM or bare metal server with its won public IP address
Learn how to copy files through a tunnel using scp or sftp
Copying files to a remote system over scp or sftp requires an SSH server running on the remote side. On almost all Linux systems SSH is installed and active.
Create a tunnel for SSH access to the remote server. The tunnel will end on a random port on your rport server. Remember the port number.
To copy a file to the remote system over the tunnel via scp use
scp -P <PORT> <LOCAL-FILE> <USER>@<RPORT-SERVER>:<DESTINATION>
For example:
scp -P 22708 /etc/hosts hero@rport.example.com:/tmp/
Doing the same over rsync
rsync -e "ssh -p 22708" /etc/hosts hero@rport.example.com:/tmp/
Open the site manager of Filezilla.
Create a new site using the "SFTP- SSH File Transfer Protocol.
Enter the name of the rport server as "Host".
Enter the port of the tunnel as port for the Filezilla connection
RPort server installation on premises explained
In this video, I’ll show you how to install the rport server on a virtual machine that is behind network address translation. The goal of the installation is to make the web interface available securely over the Internet using HTTPS. In addition, all your remote machines will be able to connect to the RPort server from anywhere. The video covers the server installation and the necessary router changes.
Install netcat on Ubuntu.
Start a simple TCP server on a given port.
Make a test connection to a host on a given port
Download the server installation script.
Download and import the RPort certificate authority.
Find examples for Linux and macOS here.
RPort Client installation explained
This video will show you how to connect your remote devices to the R-Port server.
Analyse why your rport server refuses to start
If your server doesn't start, look at the main server log file /var/log/rport/rportd.log
first. This can be done with a text editor or with the tail command. For example,
tail -n 200 /var/log/rport/rportd.log
shows the last 200 lines.
Sometimes critical errors occur before the rport server can write log to its log file. These errors are usually logged through systemd. Use journalctl -u rportd.service -e --no-pager
to inspect them.
If the above doesn't provide you enough information to understand why your server is not starting, try to run rportd
without systemd in the foreground, which will print errors directly on your console.
If you want to share diagnostic data with the RealVNC support, add the relevant files to an encrypted ZIP file and upload for later download.
The above command will ask for an encryption password. Provide a secure password and confirm. After the upload is completed, a download URL staring with https://transfer.sh is printed on the console. Share this URL and the password with the support engineer.
Using RPort remote access to Windows and Linux
In this video, you will learn how to use rport remote access for Linux and Windows systems.
First, remote access to a Windows PC using the local remote desktop client.
Second, remote access to a Linux system.
Third, remote access to Windows using the built-in browser-based remote desktop client.
And in the fourth example, you will learn how to use a tunnel with any application, demonstrated with an FTP client accessing a remote filesystem over SSH.
RPort network communication explained
In this video, we’ll look at all the components of rport and how they communicate with each other.
What ports are used for what?
What needs to be allowed on your firewall?
How does remote access over tunnels work?
What port forwarding do you need if you are using a router with Network Address Translation?
We will start with an RPort server with a directly attached public IP address.
In the second part, I’ll explain how the setup changes if you run the rport server behind network address translation, where the public IP address is bound to the router.
How to restart the rport client safely when connected via tunnel
You want to restart the rport client, but you are connected via a tunnel (RDP, VNC or SSH). If you just execute a restart command, you will kill the current connection and the restart is also killed halfway. The client will not reconnect.
You must restart the client with a small delay from a background process. This is done best from the rport script interface.
On Linux, execute the following script:
Make sure, you enable sudo.
On Windows, a few more lines of PowerShell are required to execute a task in the background. Execute the following script to safely restart rport.
Make sure you execute the script with PowerShell.
Learn how to install and use RPort by video
Preparation before installing the RPort server, 🎦 Start Video
RPort Server installation on premises, 🎦 Start Video
RPort Server installation on cloud, 🎦 Start Video
RPort Client installation, 🎦 Start Video
Remote access to Windows and Linux systems, 🎦 Start Video
RPort network communication explained, 🎦 Start Video
Solve connection errors caused by duplicated ids
All clients are identified by an id. During the client installation, the id is written to the rport.conf
file. This id can be any string. Operating system create a worldwide unique id for each system during the installation process.
The rport pairing script takes the id of the operating system and inserts it to the rport.conf
file.
On Linux the id is taken from /etc/machine-id
or a hash of all mac addresses is created, if the machine-id file is missing.
On Windows the computer system UUID is used. Get-CimInstance -Class Win32_ComputerSystemProduct).UUID
Re-using existing identifiers creates a consistent view of your inventory. But you can use other identifiers if you want.
Duplicate ids are almost always caused by system cloning. Either you have cloned a system with the rport client already installed, or after cloning, you have not created a new machine-id.
You will get an error like the below in the rport.log
.
client: Connection error: client id "1234abc" is already in use
☝️ The problem is largely limited to Linux because Windows identifies it has been cloned, and a new UUID is created automatically.
You can edit the rport.conf
with an editor and insert a randomly created UUID. Restart the client and it will connect flawlessly.
Having systems with duplicate machine-ids on a local network is not a good idea. It can cause other issues. First reset the machine id of the operating system, reboot and copy the new id from /etc/machine-id
and insert it into the rport.conf
.
📖 Reset machine id on Ubuntu 📖 Reset machine id on Debian 📖 Reset machine id on RHEL, CentOS, Rocky etc.
Learn how to get access to the RPort server if you have lost all password
RPort 0.9.12 has introduced a command line interface to set password of existing users.
Log in via SSH to your RPort server. Switch to the rport user account by executing
su - rport -s /bin/bash
. 🙅♂️ Do not perform the next steps from the root user account!
To change a password of a user, execute:
You will be asked interactively for the new password.
To reset a lost password, login to your RPort server via SSH and become the root user. If you have installed the RPort server with the cloud-installer script, a sqlite3 database is used for authentication.
If you are not sure what is the underlying storage for users and passwords, open the configuration file with a page, for example, less /etc/rport/rportd.conf
and scroll down to the [api]
section.
If you are using a static pair of username and password – option number 1 in the above screenshot – just change it and restart the rport server.
If users and passwords are stored in a json-file or in a database, all passwords are stored as brypt hashes. Create a new hash and store it in the variable PASSWD_HASH
.
On a json file
If you are using a json file, open it with a text editor, go to the line of the user you want the password to be updates, and replace the password hash by the one previously created.
Restart the rport server using systemctl restart rport
and you are done.
On a sqlite database
Check who is in there.
Update the password hash of a user
This will update the password of the user admin
with the previously created hash.
💪 You are done. You don't need to restart the rport server.
Learn how to execute scripts directly from the browser or via the API
You can execute scripts on a per-client basis directly on the clients page. By selecting "scripts" on top navigation, you can execute scripts on many clients in parallel.
Learn, from this video, how to execute PowerShell scripts on Windows machines (servers or desktop) – on a single machine and on multiple targets in parallel.
The video show how to install 7zip and notepad++ fully unattended with RPport using the following lines of PowerShell.
Type in the content of a script. You can use a regular shebang as first line like #!/bin/bash
or #!/usr/bin/env python3
.
If no shebang is given, /bin/sh
is used to execute your script.
Starting with version 0.6.0 you can execute your scripts with an interpreter.
Either enter the full path to the interpreter, or register available interpreters in the client's rport.conf
file.
To register a script interpreter on the rport.conf
file on the client and append a list of available interpreters. After restarting the client, they get available on the user interface.
For mass-deployment
For a mass deployment of clients, where each client shall use its own client_id
and password
, proceed as follows:
Generate an API key with scope clients
-auth.
Go to client access and generate a pairing script for any of the clients.
Download the bash or PowerShell script to your desktop, but don't execute it.
Open the scripts with an editor and go to the line where variables CLIENT_ID
/ $client_id
and PASSWORD
/ $password
are defined.
Delete the lines and replace with the below snippets. Each time you execute the script, new client credentials are created via an API call.
Now copy this script to new clients and execute.
If a client does not connect, likely a firewall causes the problem. Let's check this quickly from the command line.
Open the configuration file /etc/rport/rport.conf
or C:\Program Files\rport\rport.conf
with a text editor and look for the line that contains your RPort sever address. Or grab it directly from the console using grep "server =" /etc/rport/rport.conf
on Linux or find "server =" "C:\Program Files\rport\rport.conf"
on Windows.
The server settings consist of the FQDN or IP Address and the port, divided by colon. Optionally there is a protocol prefix http://
.
Example: server = "v0e0vj4l5j1m.users.rport.io:80"
The server address is v0e0vj4l5j1m.users.rport.io
and the port is 80
.
On Linux, execute echo > /dev/tcp/<SERVER>/<PPORT> && echo "All good"||echo "Server not reachable"
.
On Windows, use the PowerShell and execute
Test-NetConnection -ComputerName <SERVER> -Port <PORT>
.
If the above check fails, a firewall is blocking the outgoing connections.
If the client is not connecting, you should look at the logs.
From a Windows PowerShell execute
Get-Content "C:\Program Files\rport\rport.log"| Select-Object -Last 100
.
From a Linux console execute
tail -n 100 /var/log/rport/rport.log
.
You might get a hint why the client is not connecting.
Some networks have implemented a so-called transparent proxy. All outgoing connection targeting a remote port 80 are intercepted and redirected through an HTTP proxy. Usually, this is done for automatic virus scanning or blockage of malicious websites. Because RPort uses encryption on application layer, a proxy cannot scan the packets send by the rport client. Most proxies deny the connection if they can't consider them as harmless.
Create an exemption rule in the scanning engine of the proxy and exclude your rport server address from all scanning.
If the above is not possible, try using a different port than 80. If only a few clients are affected, do not change the client connections port of your RPort server. Just bring a second port that can be used as an alternative to the main port. The fastest way for doing this, is using rinetd
. Install it by executing apt-get install rinetd
, and create a config in /etc/rinetd.conf
like the example below.
Restart with service rinetd restart
.
If you have numerous clients connecting through rinetd, you might get an error like socket(): Too many open files
. On most distributions, the old system-v-inet is used to manage rinetd. Check systemctl status rinetd
. If you get Loaded: loaded (/etc/init.d/rinetd; generated)
the modern and de-facto standard, Systemd is not used.
Create a file /etc/systemd/system/rinetd.service
with the following content:
Pay attention to line 11 and 12. Now you have increased the limits to its maximum. To activate the new systemd service file, execute
How to solve the “attributes file path not set” error
If you try to update labels are tags over the API or the user interface, you might get the “error client error: attributes file path not set”.
Updating attributes remotely requires that you enable this feature once in the rport.conf
file on the client. This can't be done remotely.
Make sure the client runs rport version 0.9.12 or higher.
Log in to the client via SSH or Remote Desktop and open /etc/rport/rport.conf
on Linux or C:\Program Files\rport\rport.conf
on Windows with a text editor.
Inside the [client]
section, insert or activate the following lines. Depending on the version, the lines are already present but disabled.
Make sure one of the line starting with attributes_file_path
is active (no hash sign #
in front of it). Make sure the line starting with tags
is disabled by putting a hash sign.
Restart the rport client after making the changes. Use service rport restart
on Linux or restart-service
on Windows.
Be careful when restarting rport if you are connected through an rport tunnel. The restart would kill the tunnel and rport will not come up afterwards.
👉 Follow these instruction to restart rport safely.
What happens behind the scenes
RPort is based on a client-server principle. There is a central server. The clients connect to this server. This ensures that the server can always reach its clients, even if they change their IP address or are behind a NAT.
Clients establish their connection via HTTP. The use of HTTP proxies is supported. Within the HTTP connection, an SSH connection is established from the client to the server. Thus, the entire communication is encrypted. Proxies must allow HTTP CONNECT. Consequently, encryption happens at the application level and not at the transport level.
The client must know the fingerprint of the server before the connection is established. If the fingerprint does not match the server, the client refuses the connection. This prevents a possible man-in-the-middle attack.
The statically compiled client has all SSH libraries on board. It does not access SSH program files in the operating system.
RPort uses the SSH library GoSSH from Google. Only SSH2 is used with the standard ciphers aes128-ctr
, aes192-ctr
, aes256-ctr
and aes128-gcm@openssh.com
.
Authentication is not done with keys, but with username+password+fingerprint. The users determines the password strength.
Once the SSH connection tunnelled through HTTP is established, the client and server establish a so-called control channel based on web sockets. Through this channel, the server can send commands to the client. Whether and how the client passes commands to the operating system or a shell can be specified in great detail in the client configuration. For example, the user can only allow a service to be restarted or updates to be applied. Under Unix, this requires additional Sudo rules. The client has its own unprivileged user and does not run with root privileges.
If the user wants to access a TCP or UDP port of a client, for example port 22 for SSH or 3389 for the remote desktop, the server instructs the client to establish a reverse tunnel. This also happens via SSH through HTTP. This makes local ports of the clients available on the server. The ports forwarded in this way are protected by default with an access control list. Only the user who initiated the tunnel can use it. ACLs can be adjusted or disabled per tunnel. This allows services such as a web server to be shared on the Internet when systems are located behind NAT routers.
Tunnels are not limited to localhost. Any client can forward a remote TCP port to the server. This provides access to browser-based configurations of printers, NAS devices, routers, or switches.
Tunnels are not bound to a specific protocol on application level. RPort forwards raw TCP or UDP packets. On creation of a tunnel, you can optionally specify a protocol such as SSH or RDP etc. This information is just for convince to remind you, what the tunnel was created for. Once a tunnel is created, you can pass any application traffic through it.
The RPort server is controlled via REST API. Since each client gets its own REST endpoint, the clients also become controllable via REST. This makes numerous automation use cases possible.
RPort also comes with a modern web interface. This allows the customer to conveniently manage their entire infrastructure.
Execute command on a single client
The execution of commands must be allowed in the rport client configuration file /etc/rport/rport.conf
on Linux or C:\Program Files\rport\rport.conf
on Windows.
You can create a list of allowed commands and a list of disallowed commands. This allows fine-grained filtering.
It is possible to execute multiple commands. On Windows, you must concatenate the commands with a single ampersand &
. On Linux, you can use line breaks or the semicolon.
Bear in mind that the concatenation signs &
, ;
, \n
must be allowed by the regular expression on the command restrictions.
If you only want to allow a limited set of commands, pay special attention to the deny rules. Look at the following example.
These rules are leading to an unrestricted command execution because systemctl (status|restart)
can be followed by any character. For example, systemctl status cron;poweroff
is possible. If you want to allow just single command but with parameters, you must deny all characters that allow command concatenation.
Command are always executed on the cmd.exe
shell of Windows. To execute a PowerShell command, you must prefix the command with powershell
, for example, powershell "Get-Service spooler"
.
If you only want to allow restarting any service via PowerShell change your configuration as follows.
See and more .
Allowing remote command without restrictions makes the RPort server very powerful. Persons who have access to the RPort server API or the webinterface can take full control of connected clients. 👉 It's highly recommended to use .
RPort comes with a Restful API that enabled you to integrate RPort into your projects.
To use the API, you must get your personal API token. A token belongs to a user, and all user-rights (or limits) are applied to each transaction executed with the token.
From the settings menu in the top-right corner, select "API Token". Generate a new token. The token is displayed only once. If you lose the token, it can't be recovered. So store the token in a safe place.
The base URL of the API is https://<server-domain>/api/v1
. You must use HTTP basic authentication using your username and the API token as password.
Test the API connection by fetching the server status. Example:
You can read the API documentation online here.
Learn how to schedule scripts or command on a single client or on multiple clients concurrently
Starting with RPort 0.7.0 a centralized cron-like scheduler has been introduced.
Both, the server and the clients must run at least version 0.7.0 of Rport to use the scheduler. Updating all your clients is not necessary as long as you don't want to run scheduled scripts on them.
Click on the Commands
or Scripts
tab of a client. Enter the script or command that you want to execute. You can execute it right away to verify it's doing what is it supposed to do. To execute the command or script at a given time, click the gray Schedule
button. Using cron syntax, you can then specify the execution interval. Cron syntax is used for Windows, Linux and macOS.
From the "Schedules" tab, you get access to the reports. You can verify the success of all schedules jobs.
Scheduling a script are command for multiple clients works similar to executing scripts are commands. Click on the global Command
or Scripts
icon on the main menu on the left side.
Select on which clients a script or command should be executed. Instead of executing right away, klick on Schedule
.
Using the global Schedules
section accessed from the main menu on the left side, you can supervise all schedules. Those created for a single client and those created for multiple clients.
The scheduler runs only on the RPort server. Jobs are dispatched when due to the clients as regular script or command execution. All are applied. If a client is disconnected, a job will not be caught up.
Read about all the security measures built into RPort
Transport Layer Security (TLS): RPort utilizes TLS encryption to secure all communication between the server and managed devices. TLS encrypts data in transit, preventing eavesdropping and data tampering. The administrator can enforce the usage of TLS 1.2 or 1.3.
SSH Tunneling: For remote access to devices, RPort employs SSH tunneling, which encrypts remote connections within an existing SSH session. This further enhances security by encapsulating RPort's traffic within a trusted SSH channel.
Two-Factor Authentication (2FA): RPort mandates 2FA for all administrative access, adding an extra layer of security beyond passwords. 2FA requires an additional verification factor, such as a code from a mobile app, making it virtually impossible to compromise accounts with stolen passwords.
Access Control Lists (ACLs): RPort implements granular access control policies based on user roles and device permissions. This restricts access to specific devices and functions, preventing unauthorized actions.
Vulnerability Scanning and Patch Management: RPort can regularly scan managed devices for known vulnerabilities and promptly deploys recommended security patches to minimize the risk of exploitation. Required scripts and actions are not included and must be developed by the user.
Malware Detection and Prevention: Optionally, RPort can integrate with anti-malware solutions to detect and block malware infections, protecting devices from malicious software. Required scripts and actions are not included and must be developed by the user.
Secure Remote Desktop (RDP): RPort utilizes secure RDP sessions to connect to remote Windows devices, ensuring that all data transmitted during these sessions remains encrypted.
Virtual Network Computing (VNC): RPort employs secure VNC sessions using RealVNC's latest frame buffer protocol with AES256 encryption, which provide remote access with encryption and authentication.
The RPort software development is strictly supervised by Mend. Mend, formerly WhiteSource, is a comprehensive software composition analysis (SCA) platform that helps RPort to identify, prioritize, and fix vulnerabilities in their software applications. By scanning code, binaries, and container images, Mend detects known security vulnerabilities, license compliance issues, and potential security risks early in the development lifecycle.
Mend's scanning capabilities improve the security of RPort in several key ways:
Early Detection of Vulnerabilities: Mend's scans identify vulnerabilities in code and dependencies early in the development process, before they are deployed to production. This allows developers to fix vulnerabilities quickly and easily, reducing the risk of security breaches.
Improved Developer Productivity: By shifting security left, Mend helps RPort to integrate security into the development process, making it mandatory for developers to write secure code. This reduces the time and effort required to remediate vulnerabilities later in the development lifecycle.
Automated Remediation: Mend automatically generates patches for many vulnerabilities, making it easy for developers to fix them without manually searching for and applying patches. This saves time and effort, and it helps to ensure that vulnerabilities are fixed promptly.
Reduced Risk of Security Breaches: By identifying and fixing vulnerabilities early, Mend reduces the risk of security breaches. This protects sensitive data and protects the reputation of the organization.
Compliance with Regulations: Mend complies with various software security and licensing regulations, such as the Payment Card Industry Data Security Standard (PCI DSS) and the General Data Protection Regulation (GDPR).
Fine tune the client configuration
Learn how to execute command and scripts from the browser without an interactive login.
The command’s tab is indented to be used to execute a single command. Entering multiple commands is possible, but if you want to implement complex logic, it's better to use a script.
Why not use scripts always? Security is the reason.
Both command and script execution must explicitly be allowed in the rport client configuration. For the commands, you can create a list of allowed commands and a list of disallowed commands. This fine-grained filtering is not possible with scripts.
See all configuration options and more configuration examples.
If you feel it were better not to give full control over the clients to the RPort server, you should script execution of.
The restrictions for command and scripts always apply regardless of whether it's executed for a single client or many clients concurrently.
Both – command and scripts – can be executed on a single client or on many clients in parallel. Selecting a client on the left side gives you access to the command or scripts tab for a single client.
Selecting commands
or scripts
on the top navigation gives you access to the parallel execution.
Learn how to remove the client
To remove the RPort client and all logs and the configuration, execute the following command.
The RPort installer has created an uninstaller. Go to C:\Program Files\rport
and execute uninstall.bat
.
To remove it manually, open a cmd shell, go to C:\Program Files\rport
and execute
Delete the folder C:\Program Files\rport
Install the client on any device manually
While the preferred way to install the client is the pairing service, this option might not be feasible on devices with very limited resources. A shell like bash or many of the command line tools used for the automated creation of the configuration are very likely not available on devices likes routers, switches or NAS.
To run the client, you need two files.
The rport binary that matches the CPU architecture or your device
The rport.conf configuration file with all credentials and details of your rport server
The most versatile way to install the client binary is downloading the tar.gz package from https://downloads.rport.io to your desktop computer. Embedded devices might not be equipment with curl
or wget
and tools like tar
and gzip
might be missing too. So execute the download on your desktop and unpack the tar.gz file.
Either copy the unpacked rport client binary to a portable media such as an SD card or an usb stick. Or use sftp
or scp
to copy it via the network to the target. Many devices have the file system partially or entirely mounted read only. Look for a writable folder or attach a removable media.
The download includes a file rport.conf.example
. Rename it rport.conf
and open it with an editor.
For a minimal configuration, you need to activate (uncomment) and change the following lines:
server =
Enter the IP address or the FQDN and the port of your RPort server. The port must be the port of the client interface. Do not use the port of the API or the User Interface. Usually, it's port 80. Example:
server = "87bskdfsj.user.rport.io:80"
fingerprint =
Enter the fingerprint of your server. Go to Settings -> Info on the user interface to copy your fingerprint. Example:
fingerprint = "2a:c3:79:09:81:ba:5c:60:15:e5:2f:92:6d:75:56:24"
auth =
Enter a client id (aka username) and the password, separated by a colon. Go to Settings -> Client Access on the user interface to copy both values. Example:
auth = "client1:C@^Z#Iq3#8"
id =
Enter a unique identifier for the device. This id must be unique across all clients connected. On full operating system, the unique system or machine id taken. If your device has a file /etc/machine-id
, take the id from there. If this file is missing, generate a random id using uuidgen
or generate an id from your browser. Example
id = "b30a82d4-a2ec-48f4-9314-31e2ee4e6ab8"
name =
Enter a human-readable name for the device you want to connect. Example
name = "My-router-Cologne"
allow_root = true
You might need to run the client as root because creating a new user is not allowed. If possible, do not run as root. Check if you can use an unprivileged user.
updates_interval = '0'
Embedded system are not equipped with a package manager. To avoid errors being logged, switch the feature off.
log_file =
Enter a filename inside a writable folder. Examples:
log_file = /mnt/usb/rport.conf
or log_file = "/tmp/rport.conf
If you have transferred both – the binary and the configuration – to the device, start a shell on that device. Either via SSH, Telnet or a serial connection. Execute the client via ./rport -c <PATH_TO_CONFIG>
.
Check what is the preferred way to start service on boot. Hook in rport there.
RPort provides its own scripting language to make complex tasks easy.
Starting with RPort version 0.5.0 Tacoscript will installed by default with the RPort client.
Tacoscript is a declarative scripting language for the easy automation of tasks. It uses human-readable YAML as input files. The interpreter consists of a single static binary available for almost any operating system. Read more.
Only for Rport versions before 0.5.0 tacoscript is not installed by default. You must install it manually. But you can use the RPort script execution to perform the installation from the RPort web interface.
Starting with rport client version 0.2.4 the supervision of available operating system updates is possible
To enable update supervision you must have the following line in the [client]
section of your /etc/rport/rport.conf
file.
A refresh of the update status can be requested through the API and the user interface independently of the specified update interval. Going faster than 4 hours is usually not need and not recommended.
⚠️ Debian, Ubuntu and SuSE Linux need a sudo rule to fetch the update status. Create a file /etc/sudoers.d/rport-update-status
with the following content.
Learn how to transfer files from your local desktop to remote clients
Starting with version 0.7.0 it's possible to upload files directly to remote clients and store them anywhere on the remote file system.
Both, the server and the clients must run at least version 0.7.0 of Rport to use the file copy function. Updating all your clients is not necessary as long as you don't want to use this feature on them.
File reception is enabled by default on the rport client. If you consider it insecure, turn it off in the rport.conf
file.
[file-reception]
enabled = false
Pay attention to the optional filters that can be used to exclude folders from write access. By default, files cannot be coped to most OS-critical folders. Extend the filters according to your needs.
🕵 On Linux, a sudo rules is needed and created by default to allow changing the owner and mode of a file. Review and/or delete /etc/sudoers.d/rport-filereception
if it conflicts with your security policies.
Once a client allows file reception, click on the Files
tab.
Select a local file.
Specify where the file should be store remotely. 👉 You must enter a full path, not a folder.
On Linux, you can also specify the owner and mode of the file.
Get notified about issues with your rport server
The more clients you manage with RPort the more important it is to constantly monitor the faultless operation of the server. You must get notified quickly if errors occur.
If you have a monitoring solution in place, integrate your rport server there. If you run the rport server on a cloud service like AWS or Azure, you can use their monitoring.
A basic monitoring should supervise:
The uptime of the server itself (ICMP Ping)
Check if the port for the clients connections, 80 by default, is up.
Check if the port of the API/UI, 443 is up and certificates have not expired.
There is always enough disk space free on the server.
Your backups are executed constantly and flawlessly.
On the left-side main menu click on Monitors
and on the right side click the button "Create Monitor". When asked what to monitor, do not enter any URL, select "Alert us when the URL above, doesn't respond to a tcp port". The input form will change. Now enter as follows.
Host to monitor: <FQDN-OR-IP-OF-RPORT>
TCP Port: the port where clients connect
Keyword to find in response: leave empty
Send data to port: keep the default
Next, create a monitor for the RPort API and the user interface. Enter the URL of your RPort API. If the port is not the default port 443, append the port to the URL separated by a colon. You should get a green checkmark.
Unfold the “Advanced Setting” and enter a pronounceable monitor name like "RPort API/UI". On the SSL verification options enable "SSL expiration Alert 3 days before".
To monitor the disk space of your RPort sever with Better Uptime click on Heartbeats
on the left-side main menu. On the right side, click “Create Heartbeat”. Create the heartbeat as follows:
What service will this heartbeat track?: “RPort Server Disk Space”
Expect a heartbeat every: 30 minutes
with a grace period of: 5 minutes
After creating the heartbeat, a URL is created for you. Copy this URL to your clipboard and enter it to the below script on line 6.
On the rport server, store the following script under /usr/local/bin/discheartbeat.sh
.
Make the script executable and run it as a half-hourly cronjob.
Now your disks are checked every 30 minutes. If none of your disks is filled by more than 90 percent, an "all good" confirmation will be sent to Better Uptime. If any disk exceeds the maximum allowed, the heartbeat is skipped, and you will receive an alert.
To make sure your heartbeat is running, you can check the syslog by grep discheartbeat /var/log/syslog
.
On the list of active heartbeats, you will get a green light when your disks have enough space.
RPort is under active development. Keep your installation up-to-date.
The latest open-source version is 0.9.12. The below update instructions and scripts will update your client to 1.X.X which is not compatible with server versions 0.9.12 or older.
Do not update clients, unless you have updated the server to 1.X.
It's recommended to run your clients with the latest version of rport. We try to always keep server and client compatible, regardless of the version. Basic connectivity and the usage of tunnels should always be possible with clients running an older version than the server. An exception to that rule is the licence change from 0.9.12 to 1.0.0. Clients >= 1.0 will not connect to an open-source server <= 0.9.12.
A fast and easy update of the rport clients can be done through the pairing service. If you have scripting with root privileges enabled, you can trigger a client update through the rport server.
💡It's safe to execute the update while being connected via SSH or RDP through an RPort tunnel. On Windows and Linux, the rport client is restarted delayed and from a decoupled background process. You will be disconnected, but the client reconnects, and you can create a new tunnel after the update.
From a terminal or via the RPort script execution, execute the following script to update the rport client to the latest version. Execute with root or sudo rights.
It's important to wrap the update into the at
command to decouple it from the current rport connection. Otherwise, the update would restart the rport client, killing the current connection and the update process, leaving the update unfinished and the client will very likely remain disconnected.
From a terminal or via the RPort script execution, execute the following script to update the rport client to the latest version. Execute with root or sudo rights.
The Linux update script accepts parameters as follows:
The Windows update script accepts parameters as follows:
We keep all major and minor versions of the rportd
and the frontend compatible. Do not run different major and minor versions of frontend and backend.
The rport server has database migrations built-in. But some tables are excluded from auto-migration. An update consists basically of replacing the old rportd
binary by a newer version. If you need to change the database manually, we will provide SQL snippets.
For a fast, secure and convenient update, use the update script as follows, read the security advice below first:
If you already entered your licence details to the rportd.conf
file, you must not export them to the environment before starting the update.
While there a many monitoring services available at different prices, we will explain how to do it with as an example. For a reliable monitoring of a single RPort server, the free Basic plan is perfect.
The rport open-source version has been discontinued 2023-09-20. All future version require a valid license subject to a .
The RPort open-source version has been discontinued 2023-09-20. Any update will now require a valid license, subject to a . The rportd
process will not start without a license.
👉 After the update, use on your browser to purge the old frontend from the cache.
Frequently asked questions
We collected frequently asked questions.
Set up auto-renewal of Let's encrypt certificates
✋ Continue reading, only if the above hint regarding the built-in ACME doesn't apply to your setup.
If your RPort server runs with Let's encrypt certificates, the certificates need to be renewed before they expire. On Debian and Ubuntu Linux certbot
comes with an auto-renewal job. But this job requires some fine-tuning to work properly.
Starting with RPort 0.9.0 the below hooks are deployed by default by the server installer script. If you installed before August 2022 review and change your hooks manually.
On Debian and Ubuntu, the certbot
package should have installed a systemd time that checks all certificates for renewal twice a day. Check the file /lib/systemd/system/certbot.timer
exists. The command systemctl list-timers
should tell you, when certbot.timer
run for the last time.
With the default settings, certbot
cannot renew your certificates. The auto-renewal needs to be confirmed by a so-called http-01 challenge. Certbot must bring up a temporary web server on port 80. The policies of Let's encrypt don't allow using a different port. Usually RPort is using the port 80 and therefore certbot
cannot renew. You must teach certbot
how to stop RPort before the renewal and how to start RPort again.
The below stop and start actions are only executed if a renewal is due. They are not executed everytime the certbot timer runs.
By default cetbot renews 30 days before expiry. This means the hooks are executed every 60 days.
Execute the below script on your rport sever from the root account to create the hooks.
From now on, certbot
will renew the certificates automatically.
You need the above hooks even if RPort is not running on port 80. Without the restart the renewed certificate is not loaded into the web server of rportd.
How to install the rport client on macOS (Intel & ARM)
While the built-in pairing option does not provide an option to install the RPort client on macOS, RPort does support macOS. To connect your macOS device to your RPort server, follow these instructions.
To install and connect a device manually to RPort you will need the following data:
The connect URL: It equals your server FQDN. This is usually the URL used to access the RPort user interface, but without the https://
part and without and path. Using the IP address of your server is possible too. If the rport server doesn't use port 80 for the client connection, append the port number with a colon to the server FQDN. Example: rport.example.com:8080
Do not append the port used for the web user interface, typically 443.
Adding a scheme such as http://
is optional and only required if the connection is not using http.
The client ID and password: Copy this data from Settings->Client Access.
The client ID and password are case-sensitive.
The fingerprint of your server. Go to Settings->Info
With all the information at hand, you can download the installation script and execute it.
Click on the install_rport_macos.sh
link below at the end of the article and save the script somewhere, for example in your default downloads folder.
Open a terminal and change the directory to where you have downloaded the script.
Execute the script as follows:
sudo sh install_rport_macos.sh --url <connect_url> --clientid <ID> --password <password> --fingerprint <fingerprint>
With the above steps, you only get a very basic installation using the minimal defaults. Tunnels will be enabled, but command and script execution not.
Open the file /etc/rport/rport.conf
with an editor and change to your needs. Only root can edit this file, so use sudo open /etc/rport/rport.conf
to open it. Save your changes and restart rport to apply them using sudo launchctl stop rport; sudo launchctl start rport
.
Use multiple RPort servers for high availability
Inside the RPort client configuration, you can specify a primary and a list of secondary rport servers. If the client loses the connection to the primary server, it automatically connects to the first secondary server from the list, going through the list until a connection to one secondary is established.
While the client is connected to a secondary server, a background process is constantly probing the primary server. If the primary server is available again, the client switches back.
Below an excerpt of the rport client configuration showing the fallback options.
Currently, the rport server has no built-in clustering or data replication mechanism. To set up a secondary RPort server, you need to replicate the server data manually or with third-party software. The minimal data that must be replicated is the client authentication source. This can be either a JSON file or a SQLite database.
JSON and SQLite database files can be replicated on filesystem level. The client authentication tables or files are usually written very rarely. You can give a simple rsync approach a try.
Having the client authentication source replicated to one or many secondary RPort servers, your clients can connect to those.
Replicating only the client authentication data ensures you can always access and manage your remote machines. But for a larger setup, this is too minimalistic. User accounts, group memberships, scripts, and all other data is missing on the secondary server.
So it's better to replicate all databases from the primary to the secondary servers. While SQLite doesn't have replication built-in, you can try an open-source third-party solution called Litestream.
Using replicated SQLite databases is currently not officially supported and not covered by the RPort support.
Keep in mind that while clients are connected to a secondary RPort server, data is not synchronized back to the primary. This is a manual step.
Scenarios where two RPort servers are active and clients can connect to either one of them is not supported. Not with built-in features nor with third-party software. Therefore, load balancing over multiple RPort servers is also not supported.
Using high availability solution provided by hypervisors is also an option. Your hypervisor will ensure your virtual machine with the RPort server is always up. This scenario doesn't require special configuration on the server nor on the rport clients.
Q: I can use a Cloudflare proxy in front of my rport server?
To use RPort with Cloudflare, you must set up two DNS records.
One, let's say rport.example.com
for the API and the UI/dashboard
And one for accessing the tunnels, let's say tunnels.rport.example.com
The first will point to the Cloudflare Proxy, and Cloudflare handles the certificate. Set up your firewall properly so access without Cloudflare is denied. Otherwise, you wouldn't benefit from the Cloudflare DOS protection.
The second record, tunnels.rport.exmaple.com
points directly to your rport server.
With the above DNS setup, you can generate a Let's encrypt certificate on the rport server.
You might need to stop rportd during the certificate request because certbot needs to bind to port 80 for the verification process.
Use the created certificate for the tunnels.
Make sure tunnels use the tunnel FQDN. By default, tunnels, and the API/UI use the same FQDN.