windows 远程登录方案分享 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shuyuncong
0.01D
V2EX    Windows

windows 远程登录方案分享

  •  
  •   shuyuncong 4 天前 2385 次点击

    最近看到很多关于 window 远程方案登录的讨论,所以在此也和大家分享一下之前自己的方案,以供相同条件约束下的朋友参考,也借此机会看看大家是怎么处理的。(叠甲:当前方案是目前的资源和约束下的选择)

    背景诉求

    在公司访问家里的 Windows 开发机,用来浏览器查阅资料、微信、Typora 笔记、Termius 等。

    目前的现状是:

    • 公司环境: 电脑安装了监控软件,限制安装额外微信、代理/组网软件( VPN / Tailscale / ZeroTier 全部不可安装),网络无公网 IPv4/IPv6 。
    • 家庭环境: PVE 虚拟化的 Windows ,只有 IPv6 公网。

    核心诉求是

    • 在公司 通过 RDP 或 Web 访问家庭 Windows
    • 日常操作流畅(打字、拖窗口不卡)
    • 安全性优先,最好支持 MFA
    • 尽量不“触发公司风控规则”

    资源和约束

    资源

    • 日本大板服务器 ×2
      • IPv4 + IPv6
      • 公司 日本 ≈ 200ms
      • 家庭 日本 ≈ 200ms
    • 樱花 FRP / 其他公益 FRP
      • 延迟 ≈ 40ms

    约束

    • 公司电脑:不能装任何额外客户端(目前连 Tailscale 都不敢继续用)
    • 家庭 Windows:只有公网 IPv6
    • 优先 RDP ,其次 Web
    • 日常使用要求流畅
    • 安全性要高,最好有 MFA
    • 可选资源只有:日本服务器 / 公益 FRP

    方案对比

    方案 访问方式 客户端依赖 延迟 安全性 结论
    日本服务器 + Guacamole Web 可用,但体验一般
    FRP + 家庭 Guacamole Web 可用,但体验一般
    FRP + SSH 隧道 + RDP RDP 最优解
    FRP + RDP + multiOTP RDP 很高 可叠加
    公益 FRP 内置 TOTP RDP 依赖定制 FRP

    最终选择:公益 FRP + SSH 隧道 + RDP

    整体架构

    公司电脑(自带 SSH 客户端) │ │ ssh -i key -N -L 13389:WIN:3389 公益 FRP ( TCP 高位端口) │ PVE Debian 跳板机 │ 仅 SSH key │ 仅允许访问 Windows:3389 家庭 Windows ( RDP ) 

    核心原则

    • Windows 不暴露公网

    • Debian 不能随意访问内网

    • 禁止密码登录

    • 不使用 22 / 3389 等常见端口

    • Windows 启用 NLA ,使用非管理员账户

      可选叠加 Windows 端 MFA ( multiOTP )

    • 所有流量必须:FRP → SSH → 指定 RDP

    • SSH 权限最小化(只做端口转发),通过防火墙锁死出口,只允许访问 Windows 的 3389 ,防止跳板机沦陷后内网被横向渗透。

    公益 FRP + SSH 隧道方案实施

    基础设施搭建

    跳板机系统选择

    • Debian 12 minimal
    • 1C / 2G / 32GB 磁盘足够

    基础系统加固

    apt update && apt upgrade -y apt install -y openssh-server ufw fail2ban curl 

    用户职责划分

    为了安全,我们将“管理权限”和“隧道权限”分开。

    • tunnel:只允许端口转发
    • debian:运维备用账号
    # tunnel 用户:仅用于建立隧道,无 Shell 权限 adduser tunnel usermod -aG sudo tunnel # debian-cc 用户:管理员,用于维护系统 adduser debian usermod -aG sudo debian 

    SSH 安全加固

    tunnel 用户(公司 → 跳板机)

    在公司电脑生成密钥对,将公钥上传至 Debian 的 /home/tunnel/.ssh/authorized_keys

    ssh-keygen -t ed25519 -f id_frp_ssh 

    authorized_keys 中强制限制能力:我们需要配置 SSH ,使得公司电脑连接时,只能做端口转发,不能执行命令,且只能转发到家里的 Windows IP 。

    restrict,port-forwarding,permitopen="192.168.31.120:3389" ssh-ed25519 AAAA... 

    这个 key:

    • 不能 shell
    • 不能转发其他端口
    • 只能指向 Windows RDP ,即使黑客拿到了私钥,他也连不上内网的其他设备

    SSH 服务端限制

    编辑 /etc/ssh/sshd_config,修改 SSH 端口为高位端口(防扫描),并禁用密码登录。

    Port 53822 # 高位端口 PermitRootLogin no # 禁止 Root PasswordAuthentication no # 禁止密码 ChallengeResponseAuthentication no PubkeyAuthentication yes # 只认 Key AllowUsers tunnel debian # 白名单用户 # 针对管理员:允许 Shell ,禁止转发 Match User debian PermitTTY yes AllowTcpForwarding no # 针对隧道用户:禁止 Shell ,限制转发目标 Match User tunnel AllowTcpForwarding yes PermitOpen 192.168.31.120:3389 X11Forwarding no AllowAgentForwarding no PermitTTY no 

    配置完成后重启 SSH 服务:systemctl restart ssh

    防火墙策略

    验证原则只有一条:

    跳板机只能访问 Windows ,不能访问任何其他内网。

    # 1. 默认策略:拒绝入站,默认允许出站(稍后限制) ufw default deny incoming ufw default allow outgoing # 2. 允许 FRP 流量进出( SSH 端口) ufw allow 53822/tcp # 3. 精细化出站规则 (Output Chain) # 允许 Debian 访问 Windows 的 RDP ufw allow out to 192.168.31.120 port 3389 proto tcp # 允许访问网关 (DNS/路由需要) ufw allow out to 192.168.31.1 # 拒绝访问内网其他所有 IP (防止横向移动) ufw deny out to 192.168.31.0/24 # 启用防火墙 ufw enable 

    Fail2ban

    配置 /etc/fail2ban/jail.local 监控 53822 端口,错误尝试 2 次即封禁 24 小时。因为公网暴露 SSH 必然会被扫描,这是最后一道防线。

    [sshd] enabled = true port = 53822 maxretry = 2 bantime = 24h 

    关于 Windows 安全的建议

    虽然 RDP 不暴露公网,但还是建议对目标 Windows 进行加固:

    1. **启用 NLA (网络级别身份验证)**。
    2. 创建非管理员用户用于远程登录。
    3. 强密码策略
    4. (进阶) 配合 MultiOTP 软件,在 Windows 登录时强制要求 MFA 动态口令,进一步提升安全性。

    内网穿透配置 (FRP)

    使用低延迟的国内公益 FRP (如樱花 FRP / Nyat 等),将 Debian 的 SSH 端口暴露出去。

    安装 FRPC

    # 切换到 tunnel 用户安装,避免使用 root su - tunnel wget https://github.com/fatedier/frp/releases/download/v0.56.0/frp_0.56.0_linux_amd64.tar.gz # ...解压并移动到 /usr/local/bin/frpc 

    配置文件 (/etc/frpc.toml)

    我们**不直接穿透 RDP (3389)**,而是穿透 **SSH (53822)**。

    serverAddr = "rdp.example.com" # FRP 服务端地址 serverPort = 7000 user = "your_user_id" auth.token = "your_token" [[proxies]] name = "tunnel_ssh" type = "tcp" localIP = "127.0.0.1" localPort = 53822 remotePort = 53389 

    设为系统服务

    创建 /etc/systemd/system/frpc.service 并启动,确保断电重启后自动上线。

    公司电脑使用方式

    在公司电脑上,不需要安装任何软件,只需要一个 SSH 私钥文件(id_frp_ssh)。

    建立隧道

    打开 PowerShell 或 CMD:

    ssh -i id_frp_ssh -N \ -L 13389:192.168.31.120:3389 \ -p 53389 [email protected] 
    • -N: 不执行远程命令(仅转发)。
    • -L 13389:IP:3389: 将本地的 13389 端口映射到家中 Windows 的 3389 。

    连接 RDP

    打开 Windows 自带的“远程桌面连接”

    mstsc → 127.0.0.1:13389 

    实际体验

    • 延迟: 既然走的是国内/周边节点的 FRP ,物理延迟极低(约 40ms ),打字跟手,拖动窗口无残影。
    • 安全: 公司防火墙只看到一个普通的 TCP 连接;所有数据经过 SSH 加密;家里的 Windows 没有任何端口暴露在公网。
    • 合规: 没有在公司电脑安装任何未经授权的 .exe 或 VPN 客户端。

    原文: https://blog.illsky.com/posts/homelab-ssh-rdp/

    42 条回复    2026-01-09 10:15:11 +08:00
    QS0x01
        1
    QS0x01  
       4 天前
    我也用的同城的公益 frp 服务。

    t/1183259?p=2#reply141
    swczxf
        2
    swczxf  
       4 天前 via iPhone
    好复杂,虽然但是,直接用另外的电脑不是最方便么
    ayase46k
        3
    ayase46k  
       4 天前
    mark 下了,周末试试
    superBIUBIU
        4
    superBIUBIU  
       4 天前
    uu 远控走起
    shuyuncong
        5
    shuyuncong  
    OP
       4 天前
    @superBIUBIU #4 uu 应该在主控端安装软件吧,我们公司不让装这玩意,偷偷的装又怕后期审计到,很麻烦。
    shuyuncong
        6
    shuyuncong  
    OP
       4 天前
    @swczxf #2 是的,但是新电脑还没买。这是一个阶段性的解决方案,正好看到了就分享出来了
    QS0x01
        7
    QS0x01  
       4 天前
    @swczxf 楼主是武装到牙齿了,里面有些步骤不是必须的。

    必须的项目只有:
    1. 服务端配置 ssh 仅密钥登录( fail2ban 是为了防密码登录的,所以没有必要)
    2. 服务端找个公益 frp 转发 ssh 端口(自己家用没有那么多横向机子可供穿透,不是军工公司电脑不用防止横向)
    3. 客户端配置 ssh 连接后自动建立隧道转发 3389
    v2048
        8
    v2048  
       4 天前
    好复杂,先收藏了备用。这个情况最主要的困难在于公司的限制。
    PandaChan
        9
    PandaChan  
       4 天前
    有一点不是很明白,跳板机作用是啥,为啥会沦陷
    同 FRP ,路径是
    公司 FRPC 连接服务器映射 RDP 端口到本地 - 阿里云服务器 FRPS - WindowsFRPC 端口注册到服务器
    sazima
        10
    sazima  
       4 天前
    自己写了一个工具

    [家 pc(a)] <------wss://websocket-----> 腾讯云服务器 <---wss://websocket----> [公司 pc ( b )]



    电脑 B 的本地端口会映射到电脑 A 的一个端口
    simon999
        11
    simon999  
       4 天前
    mark ,有空试下
    deepbytes
        12
    deepbytes  
       4 天前
    老哥这方案跟我的一样啊,就是我用的 FIDO2 物理密钥认证的一个差别,公司电脑 macOS ,alias 命令,一键建立隧道然后 FIDO2 认证后就能 RDP 了,爽歪歪
    Paulownia
        13
    Paulownia  
    &nbp;  4 天前
    不懂就问,公司电脑不是访问不了公网么?
    jianyunet
        14
    jianyunet  
       4 天前
    lmmir
        15
    lmmir  
       4 天前
    今天试了 EasyTier 发现这个很牛逼 部署简单 功能强大。
    shuyuncong
        16
    shuyuncong  
    OP
       4 天前
    @PandaChan #9 我是为了不在公司启动/安装额外的服务,但是又怕直接暴雷端口比较危险
    shuyuncong
        17
    shuyuncong  
    OP
       4 天前
    @deepbytes #12 实不相瞒,就是看到了老哥你的回复,我才想着发出来的
    NiceKlaus
        18
    NiceKlaus  
       4 天前
    牛,很专业
    yyzq007
        19
    yyzq007  
       4 天前
    请教下 op, 这样做下来的话, rdp 的 udp 还能通吗, 对 rdp 的整体体验是否有影响?
    shuyuncong
        20
    shuyuncong  
    OP
       4 天前
    @yyzq007 #19 我应该是只用到了 tcp ,目前感觉还算流畅,打字不卡顿。
    但是比 tailscale 组网后的 RDP 体感上差一些,整体上日常使用(浏览器查阅资料、微信、Typora 笔记、Termius )差别不大。
    PandaChan
        21
    PandaChan  
       4 天前
    @shuyuncong 原来如此
    deepbytes
        22
    deepbytes  
       4 天前 via iPhone
    @shuyuncong 666 ,我之前也想着发一个帖子,太忙了,不了了之,给你点赞
    yangyujun
        23
    yangyujun  
       4 天前
    公司整个小主机,直接网线直连,组个局域网,手机整个热点,随便玩,壁纸调成一样的,利用 windows 的任务视图新建个桌面,远程桌面 app 单独占个桌面,公司电脑一个桌面,切换远程直接快捷键切换桌面即可
    嫌网速慢,就整个 typec 转 2.5G 网卡,速度飞起,还流畅,文档类的在自己主机写完 copy 到公司,不会产生任何的风险
    xmt328
        24
    xmt328  
       4 天前
    我们这里执行这一步就已经被风控了,别问我怎么知道的
    ssh -i key -N -L 13389:WIN:3389
    axiauk
        25
    axiauk  
       4 天前
    好复杂,家里可以装 Apache Guacamole ?公司直接 https 网页直接访问不就好了?
    jpyl0423
        26
    jpyl0423  
       4 天前
    现在公司没有禁止 wg ,先收藏下
    shuyuncong
        27
    shuyuncong  
    OP
       4 天前
    @axiauk #25 之前考虑过这种方案,还是选择了 RDP 的方式
    shuyuncong
        28
    shuyuncong  
    OP
       4 天前
    @xmt328 #24 不同公司限制要求不一样,理想状态还是组网比较好
    hailun3202475
        29
    hailun3202475  
       4 天前
    mark 一下,我现在是直接用 Zerotier 自建 MOON 组的网,有需求对外的服务我就直接反代出去
    liuliancao
        30
    liuliancao  
       4 天前
    既然公司限制了 应该是公司对安全比较重视 感觉个人方面还是可以克服的吧 比如用手机啥的 家里和公司分开好点 如果家里要求应急 可以考虑下双系统 公司非要访问家里 宽带换成公网 ipv4 也可以考虑下
    axiauk
        31
    axiauk  
       4 天前
    @shuyuncong Guacamole (HTML5) 因为协议转换和转发,确实增加 60 - 150ms 略带粘滞,还算可以容忍的范围。
    Ackvincent
        32
    Ackvincent  
       4 天前
    直接蒲公英走起。
    Foxkeh
        33
    Foxkeh  
       4 天前
    OP 的公司管的比较严格,所以挑战难度高一些了,不过不推荐突破公司管控规定,现在找工作不容易。

    公司要是扯这个理由不给 N+1 这不就亏死了
    letmefly
        34
    letmefly  
       3 天前
    好复杂,同意楼上的意见,如果是为了工作上的事,更亏。
    ResponseBody
        35
    ResponseBody  
       3 天前
    好复杂,自己的 PC 和服务器做组网,然后做个高位的端口映射不就好了吗。
    shuyuncong
        36
    shuyuncong  
    OP
       3 天前
    @ResponseBody #35 之前想过组网的方式,但这样需要在公司电脑安装组网的软件。目前的这种方式就不需要安装了
    shuyuncong
        37
    shuyuncong  
    OP
       3 天前
    @letmefly #34 现在的方案就像买了一台带公网 ip 的 window 云服务器,公司电脑不允许安装代理软件。在开发过程中就比较难受,这样折腾之后就算折中的方案,既没泄露内网资源,也没安装软件,开发效率也提升了
    ResponseBody
        38
    ResponseBody  
       3 天前
    @shuyuncong #36 你误会了,我指的是你的公网服务器和你家的 PC 组网,然后公网服务器开一个高端口的映射到你组网的 PC 的 3389 端口,这样的效果是一样的,没必要中间那么多层转发来转发去的。
    ResponseBody
        39
    ResponseBody  
       3 天前
    @shuyuncong #36 你的 Windows 是虚拟机也一样。在 Windows 上装个 tailscale ,公网服务器也装个 tailscale ,然后公网服务器配置端口映射到 tailscale 网络上的 Windows 的 IP:3389 就行了。
    shuyuncong
        40
    shuyuncong  
    OP
       3 天前
    @ResponseBody #39 我明白老哥的意思了,但是现在已拥有的公网服务器在国外,延迟在 200ms 左右,这样就算使用 RDP 的方式,之前猜测延迟也应该比较大吧。我晚上试试老哥的方案
    awsl2333
        41
    awsl2333  
       3 天前
    https://github.com/dushixiang/next-terminal

    可以看看这个,rdp 是基于 guacamole 的
    liarhjx
        42
    liarhjx  
       2 天前
    有 IPV6 不如搞个国内小水管服务器通过 IPV4 访问服务器,然后经过 nginx 转发到家里 IPV6 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1097 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 17:54 PVG 01:54 LAX 09:54 JFK 12:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86