编排RDP连接。通过命令行参数登录。稳健的重新连接。支持命令管道(包括帧抓取)和无头模式。
概览
Python 桌面 RDP 客户端,适用于通过 RDP 连接远程主机的 Linux 操作员,支持 NLA(CredSSP)和 NTLM 密码认证。界面为原生 PyQt6 窗口,配备指针门控键盘输入,服务器支持时可通过 MS-RDPEDISP 无缝调整大小。 - 本地安装了命名的 Python 版本(每个克隆都必须该文件;在 pip 之前用 pyenv 安装该解释器)- 用于 PyQt6 的 X11 或 Wayland 桌面会话 - 在 TCP 3389 上实现目标主机的网络可达性(或 URL 中的端口) 从激活pyenv的仓库根源出发: 可选的包装器:(运行相同命令)。 本项目不使用仓库。控制台脚本(rdp、rdpr)在可编辑安装后会落在你的 pyenv shim 路径上。 如果迁移仓库后导入失败,移除剩余目录(它可能仍指向旧的检查路径),然后重新运行。可安装的 Python 包是 ,不是 rdp。 GUI 模式(默认)会打开一个 PyQt6 窗口。
概述(AI 翻译)
Python 桌面 RDP 客户端,适用于通过 RDP 连接远程主机的 Linux 操作员,支持 NLA(CredSSP)和 NTLM 密码认证。界面为原生 PyQt6 窗口,配备指针门控键盘输入,服务器支持时可通过 MS-RDPEDISP 无缝调整大小。
先修条件
- pyenv 本地安装了 Python版本,名称为
.python-version] (每个克隆都必须该文件;在 pip 之前用 pyenv 安装该解释器) - PyQt6 的 X11 或 Wayland 桌面会话
- TCP 3389 上对目标主机的网络可达性(或 URL 中的端口)
安装
从库根节点,pyenv 激活于 .python-version:
可选封装器:./script/install.sh(运行相同命令)。
本项目不使用 .venv 仓库。控制台脚本([rdp、rdpr)在可编辑安装后会落在你的 pyenv shim 路径上。
如果迁移仓库后导入失败,移除剩余的 .venv 目录(可能仍指向旧的检出路径),并重新运行 pip install -e .。可安装的 Python 包是 rdp_pipe,不是 rdp。
在KDE / Wayland上,Qt注册Wayland应用ID rdp_pipe,必须匹配已安装的“资产/rdp_pipe。
本页由 AI 翻译,技术细节请以原文为准。
README
以下为原文 README 节选,完整内容请查看原文。
rdp_pipe
Python desktop RDP client for Linux operators connecting to remote hosts over RDP with NLA (CredSSP) and NTLM password authentication. The UI is a native PyQt6 window with pointer-gated keyboard input and seamless resize via MS-RDPEDISP when the server supports it.
Prerequisites
- pyenv with the Python version named in
.python-versioninstalled locally (the file is required in every clone; install that interpreter with pyenv before pip) - An X11 or Wayland desktop session for PyQt6
- Network reachability to the target host on TCP 3389 (or the port in the URL)
Install
From the repo root with pyenv active for .python-version:
pip install -e .
Optional wrapper: ./script/install.sh (runs the same command).
This project does not use a repo .venv. Console scripts (rdp, rdpr) land on your pyenv shim path after editable install.
If imports fail after moving the repo, remove any leftover .venv directory (it may still point at an old checkout path) and run pip install -e . again. The installable Python package is rdp_pipe, not rdp.
On KDE / Wayland, Qt registers Wayland app id rdp_pipe, which must match an installed asset/rdp_pipe.desktop entry (./script/install.sh runs the desktop install helper automatically). The portal and task switcher use that id; the human label RDP Pipe comes from the desktop file Name= field. Do not use spaces in the app id — that breaks xdg-desktop-portal registration.
Connect
rdp [-h] [--headless] [--pipe] [--no-autoresize] URL
GUI mode (default) opens a PyQt6 window. --headless runs without a display and requires --pipe for automation on the command socket under the system temp directory (rdp.sock).
Press Ctrl+C in the terminal where you launched rdp to disconnect and exit cleanly (this does not affect keyboard input forwarded inside the session window).
URL is an aardwolf-style connection string or bare host shorthand:
rdp rdp://DOMAIN\\[email protected]:3389
rdp rdp+ntlm-password://DOMAIN\\[email protected]:3389
rdp 10.0.0.5
Generic rdp:// URLs prefer NTLM password authentication; the server selects NLA (CredSSP), TLS-only, or legacy RDP during X.224 negotiation.
Server certificate trust
On NLA connect, the client stores the server TLS certificate under ~/.config/rdpipe/:
clients/— one-line file mapping the remote IP to a certificate fingerprintcertificates//—certificate(PEM),ip, andmetadata(JSON)
The first connection to an IP is accepted automatically. If the server later presents a different certificate for the same IP, the client refuses to connect and prints paths to remove, for example:
~/.config/rdpipe/clients/10.0.0.5
~/.config/rdpipe/certificates//
安装
This server does not publish a one-line install command.
Open the repository installation guide 新手?先看 mcpskill.org 教程 →