V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gdb
V2EX  ›  问与答

请问哪种远程桌面的工具,可以进行单向的文件传输功能,只允许服务器端向客户端传输数据

  •  1
     
  •   gdb · 238 天前 · 1566 次点击
    这是一个创建于 238 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有这样一个企业应用的需求。某个企业技术人员使用的工作电脑(本机电脑)是不能访问互联网的(出于安全考虑,主要是怕信息泄漏),但是需要提供一种模式提供大家上网查询资料的功能。

    目前的方法:使用一台 Linux 服务器,里面装了 xrdp 的远程桌面服务器,同时把 xrdp 服务器上面的粘贴板共享等功能关闭了,这样,客户端可以通过 Windows 的 mstsc 桌面客户端远程访问这台 Linux 服务器,然后这台 Linux 服务器是可以上网的。

    但是这里带来一个问题,Linux 服务器里面下载的东西,如何搬运到技术人员自己的电脑上面?因为 xrdp 把粘贴板共享功能关了,所以相当于客户端电脑和服务器端电脑之间没法直接 copy 数据。目前的做法是在 Linux 服务器上面装了一个 ftp 服务器,ftp 只允许下载,不允许上传,这样用户远程桌面下载到 Linux 系统的文件就可以通过 ftp 的方式,下载到自己本机电脑。

    我希望有这样一种远程桌面的工具,能让远程的服务器上直接 copy 文件到本地的客户端。但是本地客户端是不能 copy 文件到服务器的。相当于数据是单向传递的。由互联网到本机可以,但是从本机往外不行。

    所以想请教一下各位,有什么好的方法。

    我感觉如果服务器使用的是 Windows 的系统,效果应该也是差不多的,因为 Windows 在服务器端可以开(使能)远程桌面,然后通过组策略等机制,也可以把 Windows 服务器远程桌面的粘贴板功能和文件 copy 功能关闭掉,最终的结果是远程桌面的服务器端和客户端之间没法交互数据了。而我希望的是单向传输数据是允许的。

    谢谢!

    22 条回复    2023-09-21 12:41:33 +08:00
    jifengg
        1
    jifengg  
       238 天前
    有保密要求的话,其实用 ftp 已经是很“方便”的方式了,一般我们是要求自己去“网吧”上网,能不能用 U 盘拷贝数据都得另外考虑。
    而且 xdp 协议传文件比 ftp/http/smb 之类的慢很多。
    扩展一下,要是用户电脑开个共享,到服务器上打开这个共享来复制文件,你这边又是怎么应对的呢?
    apples01
        2
    apples01  
       238 天前
    没有
    gdb
        3
    gdb  
    OP
       238 天前
    @jifengg 我是这么做的,在 Linux 服务器上面设置了 iptables ,里面有访问规则,对于出站规则,只开放了用于这台 Linux 电脑能访问互联网 web 的规则,比如只允许 http ,https ,dns 等等,然后这些出站规则里面屏蔽掉了局域网的技术人员电脑的那个内网网段。

    相当于无法从 Linux 服务器(我们称为“上网电脑”)中的浏览器,通过 http 或者 https 去访问技术人员自己的电脑上开设的 http 或者 https 服务。
    gdb
        4
    gdb  
    OP
       238 天前
    @jifengg xrdp 实际上在配置上,我们就给客户端和服务器之间,把键盘鼠标操作和远程的桌面画面进行了共享,其他的一概能禁止的都禁止掉了。
    rojer12
        5
    rojer12  
       238 天前
    linux 上起一个文件同步的服务,指定一个文件夹单向同步到 Windows ?操作只需要把需要复制的文件拖到单向同步的文件夹里面
    LLaMA2
        6
    LLaMA2  
       238 天前


    在你现有的基础上加上

    remote clipboard github
    gdb
        7
    gdb  
    OP
       238 天前
    @ye4tar 没听懂你这个是怎么弄的,能介绍一下么?谢谢!


    @rojer12 你这个倒是一种不错的方式。相当于可以简单一点在 Linux 上面开一个 samba 的服务,不过如何让 samba 里面的文件只能从 Linux 中读取,不能从 Windows (客户端)写入,还是得思考或者配置一下。
    Hiddeninvalley
        8
    Hiddeninvalley  
       238 天前
    使用 Apache guacamole 可以达到你想要的效果,设置只允许客户端经过 guacamole 下载 RDP 服务器上的文件。
    LLaMA2
        10
    LLaMA2  
       238 天前
    yinmin
        11
    yinmin  
       238 天前   ❤️ 1
    提供一个方案:
    1. 准备一台 linux 服务器,安装 docker
    2. 使用 kasmweb/chrome 镜像,把容器里的下载目录通过 volume 映射到 linux 主机
    3. linux 上安装 smb 服务,提供下载目录的文件共享,配置成只读模式

    员工使用浏览器访问 kasmweb/chrome 提供的服务,通过共享目录从服务器复制文件。

    1 台服务器可以配置 10~20 个 docker 容器,可以同时提供 10~20 个员工使用,支持文本的双向复制黏贴和文件的单向复制。
    gtchan13579
        12
    gtchan13579  
       238 天前
    难道最简单的不是 SMB 共享然后只读
    yinmin
        13
    yinmin  
       238 天前
    #11 配置 kasmweb/chrome 容器时,可以使用环境变量参数 http_proxy 和 https_proxy 指定 chrome 使用代理服务器,然后在代理服务器上做网站访问限制和审计。
    rojer12
        14
    rojer12  
       238 天前
    @gdb #7 我是用的 resilio sync 来做的,同步的时候用只读的密匙建立链接就行了,你也可以用别的,很多类似的软件
    gdb
        15
    gdb  
    OP
       238 天前
    @yinmin 谢谢!你说的 docker 容器弄 10 个的意思,是我需要同时跑 10 个“kasmweb/chrome”的容器么?另外,你说的“文本的双向复制”这个功能能不能关闭掉,因为有些涉及到本地电脑上面有源代码的情况,不是很想让源代码也直接从客户端复制到服务器端,谢谢。


    @Hiddeninvalley 谢谢,我看了一下,Apache guacamole 的安装和使用有点麻烦,我有点不敢弄这个事情。


    @ye4tar 你说的这个好像我和我的需求关系不是很大。。。
    logic159
        16
    logic159  
       238 天前
    有这样的商业远程桌面产品,支持远程剪贴板的方向控制,免费的不清楚
    gdb
        17
    gdb  
    OP
       238 天前
    @yinmin 感觉国内访问 dock 的 hub 太慢了,我在试验你的方法,按照这个教程: https://kasmweb.com/docs/latest/install/single_server_install.html

    使用的是 standard install 的方式,感觉下载的时候要绝望了。。。

    需要运行的最后一个命令是:sudo bash kasm_release/install.sh

    结果如下:
    A copy of the End User License Agreement is located at:
    /tmp/kasm_release/licenses/LICENSE.txt

    I have read and accept End User License Agreement (y/n)? y
    Checking if docker and docker compose are installed.
    Docker is installed
    24.0.6 is a supported version of docker.
    Docker compose is installed
    2.5.0 is a supported version of docker compose
    Commands docker and docker compose detected.
    Skipping Dependency Installation.
    Checking if DEFAULT_PROXY_LISTENING_PORT (443) is free
    Port (443) is not in use.
    Swap Exists
    Installing All Services
    Docker network kasm_default_network already exists. Will not create
    Initializing Database
    Setting Seed file as /opt/kasm/1.14.0/conf/database/seed_data/default_properties.yaml
    Using Database Master User postgres
    Using Database Master Password from stdin -G
    kasm_db_1.14.0
    db Pulling
    7264a8db6415 Pulling fs layer
    6ff36a0c8b9b Pulling fs layer
    41485c1d4f30 Pulling fs layer
    f366013f8cd6 Pulling fs layer
    1af780e8bcfb Pulling fs layer
    9aca5db19b47 Pulling fs layer
    368f591a7da6 Pulling fs layer
    9c801f847893 Pulling fs layer
    9aca5db19b47 Waiting
    368f591a7da6 Waiting
    9c801f847893 Waiting
    f366013f8cd6 Waiting
    1af780e8bcfb Waiting
    6ff36a0c8b9b Downloading [============================> ] 721B/1.287kB
    6ff36a0c8b9b Downloading [==================================================>] 1.287kB/1.287kB
    6ff36a0c8b9b Download complete
    41485c1d4f30 Downloading [==================================================>] 149B/149B
    41485c1d4f30 Verifying Checksum
    41485c1d4f30 Download complete
    1af780e8bcfb Downloading [====> ] 720B/8.691kB
    1af780e8bcfb Downloading [============> ] 2.089kB/8.691kB
    1af780e8bcfb Downloading [===================> ] 3.458kB/8.691kB
    1af780e8bcfb Downloading [==================================================>] 8.691kB/8.691kB
    1af780e8bcfb Retrying in 5 seconds
    1af780e8bcfb Retrying in 4 seconds
    1af780e8bcfb Retrying in 3 seconds
    1af780e8bcfb Retrying in 2 seconds
    1af780e8bcfb Retrying in 1 second
    1af780e8bcfb Retrying in 10 seconds
    1af780e8bcfb Retrying in 9 seconds
    1af780e8bcfb Retrying in 8 seconds
    1af780e8bcfb Retrying in 7 seconds
    1af780e8bcfb Retrying in 6 seconds
    1af780e8bcfb Retrying in 5 seconds
    1af780e8bcfb Retrying in 4 seconds
    1af780e8bcfb Retrying in 3 seconds
    1af780e8bcfb Retrying in 2 seconds
    1af780e8bcfb Retrying in 1 second
    1af780e8bcfb Downloading 2.09kB
    1af780e8bcfb Retrying in 15 seconds
    1af780e8bcfb Retrying in 14 seconds
    1af780e8bcfb Retrying in 13 seconds
    1af780e8bcfb Retrying in 12 seconds
    1af780e8bcfb Retrying in 11 seconds
    1af780e8bcfb Retrying in 10 seconds
    1af780e8bcfb Retrying in 9 seconds
    1af780e8bcfb Retrying in 8 seconds
    1af780e8bcfb Retrying in 7 seconds
    1af780e8bcfb Retrying in 6 seconds
    1af780e8bcfb Retrying in 5 seconds
    1af780e8bcfb Retrying in 4 seconds
    1af780e8bcfb Retrying in 3 seconds
    1af780e8bcfb Retrying in 2 seconds
    1af780e8bcfb Retrying in 1 second
    1af780e8bcfb Downloading [==========> ] 1.369kB/6.601kB
    1af780e8bcfb Downloading [=========================================> ] 5.476kB/6.601kB
    1af780e8bcfb Download complete
    bianhui
        18
    bianhui  
       237 天前
    你给账户群组权限设置成只读的不就行了么。再或者试一下 guacamole
    liyouran
        19
    liyouran  
       237 天前
    直接在服务器上设置 iptables 规则匹配远程桌面的 copy 服务器然后阻断,匹配规则可能有点难
    gdb
        20
    gdb  
    OP
       237 天前 via Android
    @liyouran 这种屏蔽规则怎么写?,iptables 里面的吗?我估计我是写不出来。
    gdb
        21
    gdb  
    OP
       237 天前 via Android
    @bianhui guacamole ,这个软件我昨天上网去看了一下官网的说明,感觉这个软件挺庞大的,而且好像很多东西要自己编译,有点吓坏了,我就没试
    gdb
        22
    gdb  
    OP
       223 天前
    @yinmin 我把 kasmweb 这个系统总算安装成功了,无奈的事情是,这个系统免费版本只能 5 个 session ,多了就收费,我看了一下,收费还挺贵,所以我打算放弃了。。。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   937 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:50 · PVG 02:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.