Skip to content

lowphpcom/locmstsc

Repository files navigation

locmstsc

官网地址:https://www.locmstsc.com
版权声明:locmstsc.com · Windows 原生远程桌面连接工具 · 官方QQ群:934358325
locmstsc 是惠州市一进制科技有限公司产品之一。


locmstsc 是一个开源的 Windows 原生远程桌面连接面板。

它基于 SSH 隧道和 Windows 原生远程桌面 mstsc,主要解决两个问题:

  1. 没有公网 IP 的家庭电脑、办公电脑、Hyper-V / VMware 虚拟机,也能通过自建中转使用 Windows 原生 mstsc。
  2. 有公网 IP 的 Windows 服务器,也可以不直接暴露远程桌面端口,而是通过自建 SSH 中转进行更安全的访问。

locmstsc 不重新实现 RDP 协议,也不替代 Microsoft Remote Desktop。
它只是把 SSH 隧道、端口转发、防火墙白名单、连接检测和 mstsc 启动流程整理成一个简单的图形化面板。


项目定位

locmstsc 的定位不是通用内网穿透工具,也不是新的远控协议。

它的目标非常明确:

让没有公网 IP 的 Windows 电脑也能使用原生 mstsc;让有公网 IP 的 Windows 服务器也能更安全地访问远程桌面端口。

简单来说:

RDP / mstsc:负责远程桌面体验
SSH:负责安全隧道
locmstsc:负责图形化面板和自动化流程

locmstsc 适合:

  • 没有公网 IP 的家庭电脑、办公电脑
  • Hyper-V / VMware 等本地或内网虚拟机
  • 人在外地,需要访问家里或办公室 Windows 电脑的用户
  • 需要临时给朋友、同事进入某台 Windows 电脑的用户
  • 个人站长、独立开发者、运维人员
  • 有 Windows 服务器,但不想直接暴露远程桌面端口的用户
  • 希望使用自建 SSH 中转服务器连接 Windows 原生远程桌面的用户

和 TeamViewer / ToDesk 类屏幕共享有什么区别?

TeamViewer / ToDesk 一类工具更偏向屏幕共享和临时远程协助,常见场景是帮别人处理当前桌面问题。

Windows 原生 RDP / mstsc 更像是把一台 Windows 当成自己的远程工作机 / 私有云电脑来使用。

对比项 TeamViewer / ToDesk 类屏幕共享 原生 mstsc + locmstsc
主要定位 临时协助、屏幕共享 远程工作机、私有云电脑
使用方式 共享当前桌面给别人操作 登录 Windows 账号进入远程桌面会话
隐私边界 更像把当前屏幕展示给对方 可锁定账号登录,访问更私有
典型场景 帮别人排查当前电脑问题 复制粘贴文件、浏览网页、管理服务器、播放视频、长期使用远程 Windows
网络问题 通常依赖平台服务 可使用自建 SSH 中转服务器
locmstsc 解决的问题 不是这个方向 解决无公网 IP 也能用原生 mstsc;有公网 IP 也能安全访问远程桌面端口

所以 locmstsc 不是要做一个屏幕共享平台。
它更适合把远程 Windows 当作自己的电脑来使用:登录账号、复制文件、维护站点、浏览网页、播放视频、管理服务器,控制端需要时再通过 mstsc 进入。


为什么需要 locmstsc?

Windows 原生远程桌面很好用,但在实际使用中经常遇到两个问题:

1. 没有公网 IP,原生 mstsc 进不去

很多家庭宽带、办公网络、虚拟机环境并没有公网 IP,或者处在 NAT、路由器、防火墙之后。
这种情况下,即使 Windows 已经开启远程桌面,外网也无法直接通过 mstsc 连接进去。

locmstsc 的思路是:

被控端主动连接自建 SSH 中转服务器,保持等待;控制端需要时再通过中转进入。

这样,没有公网 IP 的家庭电脑、办公电脑、Hyper-V / VMware 虚拟机,也可以继续使用 Windows 原生 mstsc

2. 有公网 IP,也不应该直接暴露远程桌面端口

如果 Windows 服务器有公网 IP,直接把远程桌面端口暴露到公网,会长期面临:

  • 公网扫描
  • 暴力破解
  • 弱口令攻击
  • RDP 漏洞风险
  • 安全日志持续告警
  • 服务器长期处于被探测状态

locmstsc 的核心理念是:

Windows 远程桌面端口不应该直接暴露在公网。

通过 locmstsc,可以让被控端 Windows 只允许 SSH 中转服务器访问本机远程桌面端口,控制端再通过 SSH 隧道连接到被控端。


核心特性

  • 使用 Windows 原生远程桌面 mstsc
  • 基于 SSH 隧道进行 TCP 加密转发
  • 支持没有公网 IP 的家庭电脑、办公电脑和虚拟机
  • 支持有公网 IP 的 Windows 服务器更安全地访问远程桌面端口
  • 控制端通过本地端口连接远程桌面
  • 被控端统一通过 SSH 隧道等待连接
  • 被控端自动检测本机远程桌面状态
  • 被控端可开启或更新防火墙白名单
  • 可限制只允许 SSH 中转服务器访问本机远程桌面端口
  • 不保存 SSH 密码
  • 推荐使用 SSH 私钥认证
  • 支持被控端开机自启动
  • 不开放 RDP UDP 入站,减少暴露面
  • 不建议直接暴露任何远程桌面端口

底层原理

没有公网 IP 的场景

被控端 Windows / 虚拟机
   ↓ 主动建立 SSH 反向隧道
SSH 中转服务器
   ↑
控制端通过 SSH 本地隧道连接
   ↑
控制端 mstsc

被控端不需要公网 IP。
它只需要能主动连接你的 SSH 中转服务器,就可以在中转服务器上保持一个等待连接的隧道端口。

有公网 IP 的 Windows 服务器场景

传统远程桌面连接方式通常是:

控制端电脑
   ↓
Windows 服务器公网 IP:远程桌面端口

这种方式会让 Windows 远程桌面端口直接暴露在公网。

locmstsc 的连接方式是:

控制端 mstsc
   ↓
127.0.0.1:本地连接端口
   ↓
SSH 隧道
   ↓
SSH 中转服务器
   ↓
被控端 Windows 远程桌面端口

控制端最终连接的是本机端口,例如:

127.0.0.1:757

而不是直接连接:

Windows公网IP:远程桌面端口

被控端会通过 SSH 隧道在中转服务器上等待连接。
控制端连接中转服务器上的被控端隧道端口,再转发到被控端本机远程桌面端口。


SSH 隧道原型说明

locmstsc 底层可以理解为帮用户自动完成 SSH 端口转发。

以下示例使用 Windows 远程桌面默认端口 3389,实际使用时可以按你的环境修改。

被控端原型

被控端 Windows 建立反向 SSH 隧道,将中转服务器上的端口转发回本机远程桌面端口:

ssh.exe -N ^
  -R 60001:127.0.0.1:3389 ^
  locmstsc@你的SSH中转服务器

含义:

-R 60001:127.0.0.1:3389

表示在 SSH 中转服务器上监听 60001 端口,并将访问该端口的 TCP 流量,通过 SSH 隧道转发回被控端 Windows 的 127.0.0.1:3389

也就是说:

SSH中转服务器:60001
   ↓
SSH 反向隧道
   ↓
被控端 Windows:127.0.0.1:3389

控制端原型

控制端 Windows 建立本地 SSH 隧道,将本机端口转发到中转服务器上的被控端隧道端口:

ssh.exe -N ^
  -L 127.0.0.1:757:127.0.0.1:60001 ^
  locmstsc@你的SSH中转服务器

含义:

-L 127.0.0.1:757:127.0.0.1:60001

表示在控制端本机监听 127.0.0.1:757,并将访问该端口的 TCP 流量,通过 SSH 隧道转发到 SSH 中转服务器的 127.0.0.1:60001

然后控制端打开 Windows 原生远程桌面:

mstsc /v:127.0.0.1:757

完整链路如下:

控制端 mstsc
   ↓
控制端 127.0.0.1:757
   ↓
控制端 SSH 本地隧道
   ↓
SSH 中转服务器 127.0.0.1:60001
   ↓
被控端 SSH 反向隧道
   ↓
被控端 Windows 127.0.0.1:3389

locmstsc 做的事情,就是把以上命令、端口、检测、防火墙规则和 mstsc 启动流程做成面板。


控制端

控制端用于连接远程 Windows。

使用流程:

  1. 填写 SSH 中转服务器。
  2. 填写本地连接端口,默认 757
  3. 填写被控端隧道端口,默认 60001
  4. 启动连接。
  5. 点击打开远程桌面。

说明:

  • 本地连接端口默认是 757
  • 被控端隧道端口默认是 60001
  • 被控端隧道端口只用于 SSH TCP 隧道。
  • 不需要开放 UDP 60001
  • 控制端最终通过 mstsc 连接本机地址,例如 127.0.0.1:757

被控端

被控端是等待远程连接的 Windows 电脑、Windows 虚拟机或 Windows 服务器。

使用流程:

  1. 开启 Windows 远程桌面。
  2. 填写 SSH 中转服务器。
  3. 点击开启安全等待连接。
  4. locmstsc 会检测本机远程桌面状态。
  5. locmstsc 会开启或更新防火墙白名单。
  6. locmstsc 会启动 SSH 隧道等待连接。
  7. 可设置开机自启动被控端。

说明:

  • 被控端需要开启 Windows 远程桌面。
  • 被控端可以没有公网 IP。
  • 被控端可以是家庭电脑、办公电脑、Hyper-V / VMware 虚拟机或 Windows 服务器。
  • 被控端不建议直接暴露远程桌面端口。
  • 被控端防火墙可以限制远程桌面访问来源。
  • 推荐只允许 SSH 中转服务器访问本机远程桌面端口。
  • 开机自启动建议配合 SSH 私钥认证使用。

关于 RDP UDP

Windows RDP 支持 TCP 和 UDP。

locmstsc 当前基于 SSH 隧道进行 TCP 加密转发。
为了减少暴露面,locmstsc 不开放 RDP UDP 入站。

也就是说:

  • locmstsc 主要转发 RDP TCP 流量。
  • 不需要开放 RDP UDP 入站。
  • 不需要开放 UDP 60001
  • 被控端隧道端口 60001 只用于 SSH TCP 隧道。
  • 当前方案优先保证连接方式简单、透明、可审计。

如果你需要完整的 TCP + UDP 远程桌面加速方案,可以考虑后续基于专用中转协议实现,而不是在当前 SSH 隧道兼容模式中强行开放 UDP。


修改远程桌面端口

被控端可以修改本机远程桌面端口。

修改后,locmstsc 会同步更新防火墙规则。

注意:

  • 某些情况下需要重启远程桌面服务后生效。
  • 某些 Windows 环境可能需要重启系统后生效。
  • 修改端口后,请确认防火墙白名单已经同步更新。
  • 不建议将修改后的远程桌面端口直接暴露到公网。

和 frp 的区别

经常有人会问:locmstsc 和 frp 有什么区别?

简单回答:

frp 是通用内网穿透 / 反向代理工具。
locmstsc 是面向 Windows 原生远程桌面 mstsc 的 SSH 隧道连接面板。

locmstsc 并不是为了替代 frp,也不是重新实现一个通用内网穿透系统。

frp 更适合什么?

frp 更适合通用内网穿透场景,例如:

  • Web 服务穿透
  • API 服务穿透
  • TCP 服务转发
  • UDP 服务转发
  • HTTP / HTTPS 反向代理
  • 多服务统一暴露到公网

frp 的典型模型是:

公网用户
   ↓
公网服务器 frps
   ↓
内网客户端 frpc
   ↓
内网服务

它解决的问题是:

如何把内网服务暴露到公网。

locmstsc 更适合什么?

locmstsc 只专注一个场景:

如何让 Windows 原生远程桌面通过自建 SSH 中转连接。

它既可以用于没有公网 IP 的家庭电脑、办公电脑和虚拟机,也可以用于有公网 IP 但不想直接暴露远程桌面端口的 Windows 服务器。

locmstsc 的典型模型是:

控制端 mstsc
   ↓
本机端口
   ↓
SSH 隧道
   ↓
SSH 中转服务器
   ↓
被控端 Windows 远程桌面

它解决的问题是:

如何通过 SSH 隧道更安全、更可控地连接 Windows 原生远程桌面。

核心区别

对比项 frp locmstsc
项目定位 通用内网穿透 / 反向代理 Windows 原生远程桌面连接面板
底层方式 frps + frpc 自有转发体系 OpenSSH SSH 隧道 / 端口转发
主要用途 将内网服务暴露到公网 让 mstsc 通过自建中转连接远程 Windows
目标协议 TCP / UDP / HTTP / HTTPS 等多种服务 主要面向 RDP / mstsc
是否通用穿透
是否重新实现 RDP
是否替代 mstsc
用户最终使用 访问公网端口或域名 mstsc 连接本机转发端口
适合人群 通用穿透用户 想使用 Windows 原生远程桌面的用户

为什么使用 SSH?

locmstsc 当前选择 SSH,是因为 SSH 已经足够成熟、开放、稳定、可审计。

SSH 的优势:

  • 协议成熟
  • 工具普遍存在
  • 支持私钥认证
  • 支持端口转发
  • 适合自建部署
  • 连接过程透明
  • 用户可以手动复现
  • 不依赖封闭平台

locmstsc 当前阶段不追求重新发明底层协议,而是优先把成熟能力整理成简单可用的工具。


中国大陆中转服务器说明

如果只是个人自用,把中国大陆的 Linux 服务器作为 locmstsc 的 SSH 中转服务器,一般不需要占用 80443 端口,也不需要对外提供网站服务。

locmstsc 的中转服务器主要用于 SSH 隧道转发,属于私人远程访问场景:

  • 不需要部署 Web 站点。
  • 不需要监听 80 / 443
  • 不需要把远程桌面端口直接暴露到公网。
  • 可使用 SSH 服务端口和自定义隧道端口完成连接。
  • 适合个人电脑、家庭电脑、虚拟机、Windows 服务器的私有远程访问。

也就是说,locmstsc 不是让你在中转服务器上搭建公开网站,而是把中转服务器作为自己的私人连接入口。

如果服务器还要同时提供网站、公开下载、商业 SaaS、多人共享中转等公开服务,请按当地政策和云厂商要求自行确认备案、合规和安全责任。


国外服务器中转加速说明

locmstsc 的连接体验,很大程度取决于 SSH 中转服务器的线路质量。

如果你人在海外,需要访问国内家里的 Windows 电脑;或者你人在国内,需要访问海外 Windows 服务器,可以选择线路更合适的国外 VPS 作为中转节点,例如香港、日本、新加坡、美国西海岸等。

国外服务器中转的价值主要在于:

  • 可以让没有公网 IP 的电脑继续通过原生 mstsc 等待连接。
  • 可以让跨地区访问走一条更稳定的中转线路。
  • 可以根据自己所在地区和被控端所在地区选择更合适的节点。
  • 当直连线路绕路、丢包或延迟较高时,中转线路可能带来更稳定的响应。
  • 适合个人、家庭电脑、虚拟机、Windows 服务器的私人远程桌面访问。

需要说明的是,locmstsc 不是神奇加速器。

远程桌面是否流畅,仍然取决于:

  • 被控端网络上传带宽;
  • 控制端本地网络质量;
  • SSH 中转服务器带宽;
  • 中转服务器所在机房线路;
  • 控制端到中转、中转到被控端之间的延迟和丢包;
  • Windows RDP 本身的编码和显示负载。

所以,国外中转服务器可以改善访问路径和稳定性,但不承诺突破物理网络限制。线路越好、延迟越低、丢包越少,mstsc 的实际体验通常越稳定。


安全提醒

使用 locmstsc 时,建议遵守以下原则:

  • 推荐使用 SSH 私钥认证。
  • 不建议使用 SSH 密码长期运行被控端。
  • locmstsc 不保存 SSH 密码。
  • 被控端防火墙白名单不要关闭。
  • 不建议直接暴露任何远程桌面端口。
  • 不建议开放 RDP UDP 入站。
  • 开机自启动建议使用私钥认证。
  • SSH 私钥请妥善保管,不要公开分发。
  • SSH 中转服务器请使用强密码或禁用密码登录。
  • 建议限制 SSH 用户权限。
  • 建议为 locmstsc 使用专用 SSH 用户。

推荐 SSH 服务端安全配置

如果你使用专门的 SSH 用户作为 locmstsc 中转用户,建议使用类似策略限制权限。

示例:

Match User locmstsc
    AllowTcpForwarding yes
    GatewayPorts no
    PermitTunnel no
    X11Forwarding no
    AllowAgentForwarding no
    PermitTTY no
    PermitUserEnvironment no
    ForceCommand /bin/false

说明:

  • AllowTcpForwarding yes:允许 SSH 端口转发。
  • GatewayPorts no:避免转发端口监听到公网地址。
  • PermitTunnel no:不允许 tun/tap 隧道。
  • X11Forwarding no:禁用 X11 转发。
  • AllowAgentForwarding no:禁用 Agent 转发。
  • PermitTTY no:不分配交互式终端。
  • PermitUserEnvironment no:禁止用户环境变量注入。
  • ForceCommand /bin/false:禁止执行远程命令,仅用于隧道。

注意:不同系统和 OpenSSH 版本行为可能存在差异,请根据实际环境测试。


常见问题

locmstsc 是远程桌面软件吗?

不是完整意义上的远程桌面软件。

locmstsc 不实现 RDP 协议,不负责远程桌面画面、键盘、鼠标、剪贴板等功能。

这些能力仍然由 Windows 原生 mstsc 和 RDP 协议提供。

locmstsc 是一个连接面板,负责建立 SSH 隧道并启动 mstsc


locmstsc 会替代 mstsc 吗?

不会。

locmstsc 依赖 Windows 原生 mstsc
用户最终看到和使用的仍然是 Windows 自带远程桌面。


没有公网 IP 的电脑能用吗?

可以。

locmstsc 的一个核心场景,就是让没有公网 IP 的家庭电脑、办公电脑、Hyper-V / VMware 虚拟机,也能通过自建 SSH 中转使用 Windows 原生 mstsc

被控端主动连接 SSH 中转服务器并等待连接,控制端需要时再通过本地端口打开 mstsc


有公网 IP 的 Windows 服务器还需要 locmstsc 吗?

有价值。

即使 Windows 服务器有公网 IP,也不建议把远程桌面端口直接暴露到公网。

locmstsc 可以通过 SSH 隧道访问远程桌面端口,并配合防火墙白名单减少公网暴露面。


locmstsc 是否需要开放远程桌面端口?

不建议直接对公网开放。

locmstsc 的目标就是减少远程桌面端口暴露。
被控端应该通过防火墙白名单限制访问来源,推荐只允许 SSH 中转服务器访问本机远程桌面端口。


locmstsc 是否需要开放 UDP?

当前 SSH 隧道方案不需要开放 RDP UDP 入站。

被控端隧道端口,例如 60001,只用于 SSH TCP 隧道,不需要开放 UDP 60001


国外服务器可以作为中转加速吗?

可以。

locmstsc 的中转服务器可以是中国大陆服务器,也可以是国外服务器。

如果你经常跨地区访问,例如人在海外访问国内电脑,或人在国内访问海外 Windows 服务器,选择线路更合适、延迟更低、带宽更好的 VPS,通常可以让 Windows 原生 mstsc 的响应更稳定。

但这不是神奇加速器。实际体验仍然取决于被控端上传、中转服务器线路、控制端网络、延迟和丢包情况。


locmstsc 是否是 TeamViewer / ToDesk 的替代品?

不是完全同类产品。

TeamViewer / ToDesk 更偏向屏幕共享和临时协助。
locmstsc 更偏向让用户继续使用 Windows 原生 mstsc,把远程 Windows 当成自己的工作机或私有云电脑来使用。


locmstsc 是否是 frp 的替代品?

不是。

frp 是通用内网穿透工具。
locmstsc 是面向 Windows mstsc 的 SSH 隧道连接面板。

如果你需要通用 Web、TCP、UDP、HTTP、HTTPS 穿透,frp 更适合。
如果你只想使用原生 mstsc 连接 Windows 远程桌面,locmstsc 更直接。


为什么不直接用 SSH 命令?

懂技术的人当然可以直接写 SSH 命令。

locmstsc 的价值在于把这些步骤图形化和自动化:

  • 填写配置
  • 生成 SSH 隧道
  • 检测连接状态
  • 管理本地端口
  • 管理被控端等待连接
  • 配置防火墙白名单
  • 调用 mstsc
  • 支持开机自启动

locmstsc 不是隐藏原理,而是降低重复操作成本。


Build

Windows 下构建:

.\scripts\create-icon.ps1
rsrc -ico .\assets\locmstsc.ico -o .\rsrc.syso
.\build-release.cmd

中转服务器脚本部署

Debian 12 / 13、Ubuntu 22 / 24 下部署:

cd /root && apt update && apt install -y curl
curl -fL https://raw.githubusercontent.com/lowphpcom/locmstsc/main/locmstsc-server-setup.sh -o locmstsc-server-setup.sh
chmod +x locmstsc-server-setup.sh
bash locmstsc-server-setup.sh

部分低版本 Windows 系统会提示缺少 ssh.exe,请下载对应版本,解压后放入 locmstsc.exe 同级目录:

https://github.com/PowerShell/Win32-OpenSSH/releases/latest/download/OpenSSH-Win64.zip
https://github.com/PowerShell/Win32-OpenSSH/releases/latest/download/OpenSSH-Win32.zip

License

本项目计划以开源方式发布。

具体开源协议请以仓库中的 LICENSE 文件为准。


官网与版权

官网地址:https://www.locmstsc.com

版权声明:locmstsc.com · Windows 原生远程桌面连接工具 · 官方QQ群:934358325

locmstsc 是惠州市一进制科技有限公司产品之一。


总结

locmstsc 不是新的 RDP 协议。
locmstsc 不是通用内网穿透工具。
locmstsc 也不是黑盒屏幕共享平台。

它就是一个开源的 Windows 原生远程桌面连接面板。

它基于 SSH 隧道和 Windows 原生 mstsc

  • 让没有公网 IP 的家庭电脑、办公电脑和虚拟机也能使用原生 mstsc;
  • 让有公网 IP 的 Windows 服务器也能不直接暴露远程桌面端口;
  • 让远程桌面连接过程更透明、更可控、更容易使用。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors