xrdp

neutrinolabsApache-2.0活跃维护 有专家点评

开源 RDP 服务端,让 Linux 等系统能被 Windows 远程桌面客户端直接连接,省去额外客户端。

xrdp: an open source RDP server

v0.10.6.1发布于 2026-07-07 02:03 UTC6,787star +4 / 7 天1,790fork同步于 2026-11-11 23:32 UTC

专家点评

上手难度:进阶更新于 2026-11-11

在 Linux 上跑一个 RDP 服务端,让 Windows 自带的 mstsc 直接连进来,不用装客户端

适用场景

  • 给运维或内网用户提供 Windows 原生远程桌面入口:客户端侧零安装,直接 mstsc 连 3389,比让他们装 VNC 客户端或走 SSH X11 转发省事得多
  • 把 Linux 工作站当跳板机用:xrdp 自带 RDP/VNC 代理转发能力,可以串到后端机器,省掉一层额外网关
  • 需要会话保持的场景:断线重连回原会话、连接中改分辨率,比每次重开 X session 的 VNC 方案体验更接近 Windows 远程桌面
  • 已有 Windows 域环境、想复用现有 RDP 客户端和习惯,而不是引入 TigerVNC/noVNC 那套 Web 或独立客户端栈

踩坑

  • 只装 xrdp 不装 xorgxrdp 就连不到 Linux 桌面,这是最常见的第一次失败点;README 明说了要么补 xorgxrdp,要么退回 Xvnc 后端,两条路配置完全不同
  • 登录后黑屏类问题在 issue 里反复出现(Ubuntu 18.04 + Windows 10 那条有 52 个反应、84 条评论),撞上的时机通常是桌面环境与 xrdp 会话启动脚本不匹配,不是网络问题,排查方向容易跑偏
  • 动态分辨率调整是反应数最高的 issue(129 个反应),说明「连接中改分辨率」这个能力在不少版本/后端组合上并不完整;如果你的工作流依赖窗口缩放跟随,先确认后端是 xorgxrdp 还是 Xvnc
  • 音频/麦克风重定向要自己编译 pulseaudio 模块,从 git 构建还要递归拉子模块并装 autoconf/automake/libtool/pkg-config,发行版包和自编译两条路的产物不一样

同类对比

要 Web 入口而不是原生 RDP 客户端,看 noVNC/Apache Guacamole;只要单机图形转发、不想要完整桌面会话管理,SSH X11 转发或 TigerVNC 更轻。Wayland 桌面是 xrdp 的长期边界,issue 里那条 Wayland 讨论有 162 条评论但仍是 feature request 状态,纯 Wayland 环境现阶段别指望它。

怎么上手

由 README 提炼,执行前请确认
apt install xrdp
硬件要求按 README 说明

主要面向 GNU/Linux,x86(含 x86-64)与 ARM 架构最成熟;xorgxrdp 和 RemoteFX 编解码在 x86 上使用 SIMD 优化,x86 可获得完整加速。README 未提及显存要求。

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

开源 RDP 服务端,让 Windows 等 RDP 客户端远程登录 Linux 图形桌面

开源 RDP 服务端,让 Linux 等系统能被 Windows 远程桌面客户端直接连接,省去额外客户端。

核心能力

  • 接受 mstsc、FreeRDP、rdesktop 等多种 RDP 客户端连接
  • 默认用 TLS 加密 RDP 传输
  • 支持重连已有会话与连接时/动态调整会话分辨率
  • 双向剪贴板(文本、位图、文件)与驱动器重定向
  • 可作为 RDP/VNC 代理转发到其他服务器

容易踩的坑

需同时安装 xorgxrdp 才能连 Linux 桌面,否则改用 Xvnc 服务器;默认监听 3389/tcp,需放行防火墙;音频和麦克风重定向需额外编译 pulseaudio 模块;从 git 仓库编译需递归克隆子模块并安装 autoconf、automake、libtool、pkg-config。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.10.6.1
  1. v0.10.6.1xrdp v0.10.6.1最新正式版2026-07-07 · 2026-07-07 02:03 UTC

    Release notes for xrdp v0.10.6.1 (2026/07/06)

    General announcements

    This release fixes 10 vulnerabilities and 1 regression introduced by a vulnerability fix in the previous release.

    If you like xrdp, please consider sponsoring or donating to the project. We accept financial contributions through Open Collective, and direct donations to individual developers via GitHub Sponsors are also welcome.

    Security fixes

    New features

    None

    Bug fixes

    • regression: Fix SEGV in xrdp when running over TLS (#3793)

    Internal changes

    • CI: Switch FreeBSD CI from Cirrus CI to GitHub Actions (#3800)

    Changes for users

    None

    Changes for packagers or developers

    • (from v0.10.3) The --enable-utmp needs to be added to enable UTMP support.
    • (from v0.10.3) The config file subdirectory (xrdp part of /etc/xrdp) can now be configured (#3369)
    • (from v0.10.3) Packagers using TigerVNC to provide the Xvnc backend may wish to configure the 'Xvnc over UDS' session type as a default by using a code=1 line in xrdp.ini. Instructions are provided in the released xrdp.ini file.
    • The unfinished PIV smartcard support is now disabled by default, but can be re-enabled by adding --enable-smartcard to the configure command. Because of possible security issues with this code, this should only be done by developers working in non-production environments (#3759)
  2. v0.10.6.1-rc.1xrdp v0.10.6.1-rc.1pre-release2026-07-02 · 2026-07-02 23:13 UTC
    查看更新说明

    This is the Release Candidate for xrdp v0.10.6.1. If no issues are found, v0.10.6.1 will be released shortly.

  3. v0.10.6xrdp v0.10.62026-04-17 · 2026-04-17 14:47 UTC
    查看更新说明

    Release notes for xrdp v0.10.6 (2026/04/17)

    General announcements

    If you like xrdp, please consider sponsoring or donating to the project. We accept financial contributions through Open Collective, and direct donations to individual developers via GitHub Sponsors are also welcome.

    • [V0.10.3] Experimental support for utmp/wtmp file is provided in this release. If you use this, be aware that these files are only updated when an xrdp session is created or destroyed. Disconnections and reconnections to the same session are not tracked. In particular:
      • the FROM address for a client (as shown by the w command) reflects the IP address of the client at the time of creation, and not the address of the currently connected client.
      • Sessions started by the xrdp-sesrun command do not have a FROM address.
    • The use_vsock parameter in xrdp.ini is deprecated. Use 'port=vsock://' instead.

    Security fixes

    Thanks to @exploitintel, @smittix and @hessandrew!

    New features

    • Support for xorgxrdp bug fixes neutrinolabs/xorgxrdp#249 and neutrinolabs/xorgxrdp#342 (#3721)

    Bug fixes

    • Honour pass_shell_as_env setting only if user sets a shell (#3725)
    • We no longer try to create a NULL authentication file when using VNC over UDS (#3727)
    • Problems with the Brazilian ABNT2 keyboard mapping have been corrected (#3728 3736)
    • A 'file exists' error when installing xrdp over an existing installation has been addressed (#3780)

    Internal changes

    None

    Changes for users

    None

    Changes for packagers or developers

    • (from v0.10.3) The --enable-utmp needs to be added to enable UTMP support.
    • (from v0.10.3) The config file subdirectory (xrdp part of /etc/xrdp) can now be configured (#3369)
    • (from v0.10.3) Packagers using TigerVNC to provide the Xvnc backend may wish to configure the 'Xvnc over UDS' session type as a default by using a code=1 line in xrdp.ini. Instructions are provided in the released xrdp.ini file.
    • The unfinished PIV smartcard support is now disabled by default, but can be re-enabled by adding --enable-smartcard to the configure command. Because of possible security issues with this code, this should only be done by developers working in non-production environments (#3759)
  4. v0.9.27xrdp v0.9.272026-01-28 · 2026-01-28 12:59 UTC
    查看更新说明

    Release notes for xrdp v0.9.27 (2026/01/28)

    General announcements

    xrdp v0.9.x is end-of-life. New releases may happen when severe security vulnerabilities or critical bugs are found.

    We have created a fund on Open Collective. Support us if you like xrdp! Direct donations to each developer via GitHub Sponsors are also welcomed.

    Security fixes

    Bug fixes

    • xrdp.ini manpage updated (#3158)

    New features

    No new features in this release.

    Internal changes

    • FreeBSD CI bumped to 14.3 (#3706)
    • AC_C_CONST macro removed from configure.ac files (#3709)

    Known issues

    • On-the-fly resolution change requires the Microsoft Store version of Remote Desktop client but sometimes crashes on connect (#1869)
    • xrdp's login dialog is not relocated at the center of the new resolution after on-the-fly resolution change happens (#1867)
  5. v0.10.5xrdp v0.10.52026-01-27 · 2026-01-27 14:32 UTC
    查看更新说明

    Release notes for xrdp v0.10.5 (2026/01/27)

    General announcements

    If you like xrdp, please consider sponsoring or donating to the project. We accept financial contributions through Open Collective, and direct donations to individual developers via GitHub Sponsors are also welcome.

    • [V0.10.3] Experimental support for utmp/wtmp file is provided in this release. If you use this, be aware that these files are only updated when an xrdp session is created or destroyed. Disconnections and reconnections to the same session are not tracked. In particular:
      • the FROM address for a client (as shown by the w command) reflects the IP address of the client at the time of creation, and not the address of the currently connected client.
      • Sessions started by the xrdp-sesrun command do not have a FROM address.
    • The use_vsock parameter in xrdp.ini is deprecated. Use 'port=vsock://' instead.

    Security fixes

    New features

    • It is now possible to start the xrdp daemon entirely unprivileged from the service manager (#3599 #3603). If you do this certain restrictions will apply. See https://github.com/neutrinolabs/xrdp/wiki/Running-the-xrdp-process-as-non-root for details.
    • TLS pre-master secrets can now be recorded for packet captures (#3617)
    • Add a FuseRootReportMaxFree to work around 'no free space' issues with some file managers (#3639)
    • Alternate shell names can now be passed to startwm.sh in an environment variable for more system management control (#3624 #3651)
    • Updated Xorg paths in sesman.ini to include more recent distros (#3663)
    • Add Slovenian keyboard (#3668 #3670)
    • xrdpapi: Add a way to monitor connect/disconnect events (#3693)

    Bug fixes

    • Allow an empty X11 UTF8_STRING to be pasted to the clipboard (#3580 #3582)
    • Fix a regression introduced in v0.10.x, where it became impossible to connect to a VNC server which did not support the ExtendedDesktopSize encoding (#3540 #3584)
    • Fix a regression introduced in v0.10.x related to PAM groups handling (#3594)
    • Inconsistencies with [MS-RDPBCGR] have been addressed (#3608)
    • A reference to uninitialised data within the verify_user_pam_userpass.c module has been fixed (#3638)
    • Prevent some possible crashes when the RFX encoder is resized (#3590 #3644)
    • Fixes a regression introduced by GFX development which prevented the JPEG encoder from working correctly (#3649)
    • Fixes a regression introduced by #2974 which resulted in the xrdp PID file being deleted unexpectedly (#3650)
    • Do not overwrite a VNC port set by the user when not using sesman (#3674)
    • Fix regression from 0.9.x when freerdp client uses /workarea (#3618 #3676)
    • Fixes a crash where a resize is attempted with drdynvc disabled (#3672 #3680)
    • getgrouplist() now compiles on MacOS (#3575)
    • Various Coverity warnings have been addressed (#3656)
    • Documentation improvements (#3665)

    Internal changes

    • An unnecessary include of sys/signal.h causing a compile warning on MUSL-C has been removed (#3679)

    Changes for users

    None

    Changes for packagers or developers

    • (from v0.10.3) The --enable-utmp needs to be added to enable UTMP support.
    • (from v0.10.3) The config file subdirectory (xrdp part of /etc/xrdp) can now be configured (#3369)
    • (from v0.10.3) Packagers using TigerVNC to provide the Xvnc backend may wish to configure the 'Xvnc over UDS' session type as a default by using a code=1 line in xrdp.ini. Instructions are provided in the released xrdp.ini file.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Build Status Gitter Apache-License

    Latest Version

    xrdp - an open source RDP server

    Overview

    xrdp provides a graphical login to remote machines using Microsoft Remote Desktop Protocol (RDP). xrdp accepts connections from a variety of RDP clients:

    • FreeRDP
    • rdesktop
    • KRDC
    • NeutrinoRDP
    • Windows MSTSC (Microsoft Terminal Services Client, aka mstsc.exe)
    • Microsoft Remote Desktop (found on Microsoft Store, which is distinct from MSTSC)

    Many of these work on some or all of Windows, Mac OS, iOS, and/or Android.

    RDP transport is encrypted using TLS by default.

    Modern xrdp login followed by a successful connection to an Xfce desktop

    The demo shows the optional LVGL login interface. The legacy login remains the default.

    Features

    Remote Desktop Access

    • Connect to a Linux desktop using RDP from anywhere (requires xorgxrdp Xorg module)
    • Reconnect to an existing session
    • Session resizing (both on-connect and on-the-fly)
    • RDP/VNC proxy (connect to another RDP/VNC server via xrdp)

    Access to Remote Resources

    Supported Platforms

    xrdp primarily targets GNU/Linux operating system. x86 (including x86-64) and ARM processors are most mature architecture to run xrdp on. See also Platform Support Tier.

    Some components such as xorgxrdp and RemoteFX codec have special optimization for x86 using SIMD instructions. So running xrdp on x86 processors will get fully accelerated experience.

    Quick Start

    Most Linux distributions should distribute the latest release of xrdp in their repository. You would need xrdp and xorgxrdp packages for the best experience. It is recommended that xrdp depends on xorgxrdp, so it should be sufficient to install xrdp. If xorgxrdp is not provided, use Xvnc server.

    xrdp listens on 3389/tcp. Make sure your firewall accepts connection to 3389/tcp from where you want to access.

    Ubuntu / Debian

    apt install xrdp
    

    Fedora, RHEL and derivatives

    If you're not running Fedora, make sure to enable EPEL packages first.

    dnf install epel-release
    

    (All systems) Install xrdp with:-

    dnf install xrdp
    

    Compiling

    See also https://github.com/neutrinolabs/xrdp/wiki#building-from-sources

    Prerequisites

    To compile xrdp from the packaged sources, you need basic build tools - a compiler (gcc or clang) and the make program. Additionally, you would need openssl-devel, pam-devel, libX11-devel, libXfixes-devel, libXrandr-devel. More additional software would be needed depending on your configuration.

    To compile xrdp from a checked out git repository, you would additionally need autoconf, automake, libtool and pkg-config.

    Get the source and build it

    If compiling from the packaged source, unpack the tarball and change to the resulting directory.

    If compiling from a checked out repository, please make sure you've got the submodules cloned too (use git clone --recursive https://github.com/neutrinolabs/xrdp)

    Then run following commands to compile and install xrdp:

    ./bootstrap
    ./configure
    make
    sudo make install
    

    If you want to use audio redirection, you need to build and install additional pulseaudio modules. The build instructions can be found at wiki.

    Directory Structure

    xrdp
    ├── common ······ common code
    ├── docs ········ documentation
    ├── fontutils ··· font handling utilities
    ├── genkeymap ··· keymap generator
    ├── instfiles ··· installable data file
    ├── keygen ······ xrdp RSA key pair generator
    ├── libpainter ·· painter library
    ├── librfxcodec · RFX codec library
    ├── libxrdp ····· core RDP protocol implementation
    ├── m4 ·········· Autoconf macros
    ├── neutrinordp · RDP client module for proxying RDP connections using NeutrinoRDP
    ├── pkgconfig ··· pkg-config configuration
    ├── scripts ····· build scripts
    ├┬─ sesman ······ session manager for xrdp
    |├── chansrv ···· channel server for xrdp
    |├── libsesman ·· Code common to sesman and its related executables
    |└── tools ······ session management tools for sys admins
    ├── tests ······· tests for the code
    ├┬─ tools ······· tools
    |└┬─ devel ······ development tools
    | ├── gtcp_proxy  GTK app that forwards TCP connections to a remote host
    | └── tcp_proxy · CLI app that forwards TCP connections to a remote host
    ├── vnc ········· VNC client module for xrdp
    ├── vrplayer ···· QT player redirecting video/audio to clients over xrdpvr channel
    ├── xrdp ········ main server code
    ├── xrdpapi ····· virtual channel API
    ├── xrdpvr ······ API for playing media over RDP
    └── xup ········· xorgxrdp client module
    

    An optional modern pre-session interface is available with the system LVGL library. See LVGL login UI for build requirements and configuration.