事情的背景是这样的:我们办公时要同时使用本地的电脑(编码、文档等)和一个远程桌面(用于一些运维操作,程序 debug 等,这个远程桌面是部署在服务器上的,通过华为的 AccessClient 连接),本地电脑可以文本到远程桌面服务器,但是反过来不可以,因此我想到了一个方法来实现从远程桌面将文本(后续可能做文件的)复制到办公电脑的办法,整体架构图如下:
其实就是靠 ditto 把剪贴板的内容持久化到 sqlite 中,我自己在远程桌面端启动一个客户端去监听 sqlite 的 Main 表中的插入记录中的 mText 字段,mText 中存储内容大致如下:
然后将内容推送到一台办公电脑和远程桌面都能连接的,运行着 kafka 的服务器上,然后办公电脑端启动一个客户端去消费 kafka 的某个 topic ,并同步到本地客户端,用户就可以选择要粘贴的内容了。
但是还有几个细节需要问问大家:1 、关于生产 /消费到到哪个 topic ,是否还需要一个程序去确定和同步 topic 的信息? 2 、消息内容虽然可以通过 kafka 提供的 tls 加密保证不被窃取,但是怎么不保证有人故意去连接别的 topic 去获取他人的剪贴板内容,即如何保证生产和消费的两个客户端都只能消费特定的 topic ? 3 、关于语言,我想用 Go 实现上述的功能,原因是:( 1 )单文件,依赖少,方便部署;( 2 )破解的难度相比如脚本语言高一些;( 3 )可跨操作系统编译,大家觉得可以吗?
请大家说说这个思路的可行性和不足之处,十分感谢!
1
zhoudaiyu OP 补充一点,远程桌面是不可以连接 Internet 的,只能连接某些服务器,这些服务器也是在内网环境的,所以微信、QQ 等需要 Internet 连接的方式都行不通,所以才想了这种思路
|
2
minamike 2022-01-09 14:38:25 +08:00 via iPhone
为什么不用 rdp
rdp 不是可以双向复制粘贴吗 |
5
zhoudaiyu OP @thunderw #3 对,但是也没有限制不能用别的手段粘贴出来,因为可以用 ftp ,但是好多人抱怨麻烦,我也觉得是(狗头
|
7
zhoudaiyu OP @minamike #6 企业定制的一些功能吧,主要是这个限制非常麻烦,从里面粘贴东西出来内容要到文件里->把文件推送到 ftp 服务器->然后自己电脑 ftp 刷新->拉文件->打开文件
|
10
xinyana 2022-01-09 16:43:26 +08:00 via Android
之前想过这个问题也分析过 ditto 的表结构,楼主加油,静待佳音
|
11
zhoudaiyu OP @xinyana 大佬,我没看过代码,就直接读的数据库,找的表和字段没错吧?想和你交流交流,不知方便否?
|
12
mscststs 2022-01-09 18:21:23 +08:00 1
|
14
starsky007 2022-01-09 21:23:22 +08:00 via Android
为什么要引入 ditto ,难道不能直接监听剪贴板变化?
|
15
zhoudaiyu OP @starsky007 开发成本低,公司内部用
|
16
yufeng0681 2022-01-09 23:13:34 +08:00
1 、这种 copy 限制,都是为了信息安全而设定; 你应该找运维人员,让他去联系华为云电脑供应商,如何开启桌面云 copy 到本地电脑的设置项(一般都有这样的功能,可能不让大段的 copy ,500 字节之类的限制还是要做的);
2 、一般如果是运维生产系统,基本上就是 linux 上运行,极少在 windows 上跑服务。 如果真的允许你们用 ftp 做中转。那其实已经突破了隔离生产环境的概念,属于面子上做做信息安全(生产隔离)。 那直接让运维人员开启 ssh 中转服务,直接从本地系统通过跳板机登录到目标服务器,采集日志信息(权限约束为:只读, 不允许进程操作,文件删除等操作) |
17
zhoudaiyu OP @yufeng0681 我就是运维……我们真的允许 FTP 中转…….
|
18
yufeng0681 2022-01-09 23:25:51 +08:00
1 、桌面云有服务端管理功能,分配系统权限,分配硬件资源。 可以咨询一下华为对接的。如何改。
2 、允许 ftp ,那你就再开 ssh 服务呗,本地就能跳到目标服务器进行运维操作(只读类的,不蛮好么。 还开发软件干啥…… |
19
zhoudaiyu OP @yufeng0681 但是我们用的这个也是我们总公司买的,我们没权限搞这些。SSH 就别想了,只有 FTP 可以用…
|
20
yufeng0681 2022-01-09 23:45:25 +08:00
你如果没有权限在都能访问到的机器 A 上安装 ssh ,那你怎么能在机器 A 上开 kafka 呢?而且还 两边机器都能连上机器 A 的 kafka 端口?
你具备的权限和条件要说得更详细一些。 你具体的运维场景详细说明,就不一定要用自己开发软件的办法,而是用别人的软件搭建就好。 |
21
zhoudaiyu OP @yufeng0681 网络环境比较复杂,估计还得画个图。您说的意思是把 kafka 换成 SSH 做中转?
|
22
catror 2022-01-10 02:17:16 +08:00 via Android
反向复制就是在远程桌面的管理后台点一个 Checkbox 的事……
|
23
klo424 2022-01-10 08:22:03 +08:00
复制文件可以用文叔叔
|
24
lonenol 2022-01-10 09:06:23 +08:00
换个思路,直接截图 ocr 。。
你这种做法个人感觉不太好。。你可以监听剪切板,别人就可以监听所有 db 操作,把数据搞一份出来。。 |
25
zhoudaiyu OP |
26
dreamage 2022-01-10 09:35:43 +08:00
公司规定限制的,LZ 还在想办法(帮公司同事)突破限制,不怕背锅么
|
28
gaobing 2022-01-10 10:01:42 +08:00
|
29
raullf 2022-01-10 14:24:45 +08:00 via iPhone
我很好奇,16L 说的对噢,本来就是为了信息安全,单向联通 de
你怎么从远程出来呢? |
30
raullf 2022-01-10 14:25:26 +08:00 via iPhone
另问架构图用什么软件画的呢,看着很美
|
32
hntangbohu 2022-01-10 15:33:21 +08:00
qq 输入法好像有 云粘贴板
|
35
5966 2022-01-13 11:52:06 +08:00 via iPhone
我们这用的 Citrix Receiver 虚拟桌面,有权限的账号可以拷贝出文件!
|