如何搭建一款私有化部署的远程桌面 – VVip | 您所在的位置:网站首页 › Windows远程连接命令 › 如何搭建一款私有化部署的远程桌面 – VVip |
相关阅读
搭建自己的远程控制,从此抛弃某日葵
1个月前
75210119
项目介绍
新一代主机管理工具,支持web shell和web桌面,居家办公神器 功能特性 支持私有化部署 较小的内存占用(约20M左右) 支持tls安全连接 支持多路异步IO 支持虚拟链路层 支持链路和终端会话监控 protobuf数据编码 支持web shell linux和mac系统支持创建pty设备和颜色输出 windows系统支持powershell 支持web vnc 支持基本的键盘鼠标操作 支持全屏显示 支持滚动 支持远程剪贴板设置与读取 支持多种操作系统 linux windows macos 实现原理支持tls链接,protobuf进行数据传输,下面举例远程连接服务器集群内的某台主机 server端配置(10.0.1.1): listen: 6154 # 监听端口号 secret: 0123456789 # 预共享密钥 log: dir: /opt/natpass/logs # 路径 size: 50M # 单个文件大小 rotate: 7 # 保留数量 tls: key: /dir/to/tls/key/file # tls密钥 crt: /dir/to/tls/crt/file # tls证书服务器client配置(192.168.1.100): id: server # 客户端ID server: 10.0.1.1:6154 # 服务器地址 secret: 0123456789 # 预共享密钥,必须与server端相同,否则握手失败 log: dir: /opt/natpass/logs # 路径 size: 50M # 单个文件大小 rotate: 7 # 保留数量办公网络client配置(172.16.1.100): id: work # 客户端ID server: 10.0.1.1:6154 # 服务器地址 secret: 0123456789 # 预共享密钥,必须与server端相同,否则握手失败 log: dir: /opt/natpass/logs # 路径 size: 50M # 单个文件大小 rotate: 7 # 保留数量 rules: # 远端rule列表可为空 - name: rdp # 链路名称 target: server # 目标客户端ID type: shell # 连接类型tcp或udp local_addr: 0.0.0.0 # 本地监听地址 local_port: 3389 # 本地监听端口号工作流程如下: 办公网络与家庭网络中的np-cli创建tls连接到np-svr np-cli服务发送握手包,并将配置文件中的secret字段进行md5哈希 np-svr等待握手报文,若等待超时则为非法链接,直接断开 用户打开办公网络主机172.16.1.100上的终端页面,并连接到服务器集群中的主机server 172.16.1.100上的np-cli发送connect_request消息,并将连接类型设置为shell np-svr转发connect_request消息至192.168.1.100上的np-cli 192.168.1.100上的np-cli接收到connect_request消息,创建/bin/bash进程 192.168.1.100上的np-cli根据链接创建结果返回connect_response消息 np-svr转发connect_response消息至172.16.1.100上的np-cli 172.168.1.100上的np-cli接收connect_response消息 开始转发网页上的输入输出内容 软件架构 效果截图dashboard页面 linux命令行效果 windows命令行效果 windows2008远程桌面 windows10远程桌面 windows11远程桌面 ubuntu远程桌面 fedora远程桌面 deepin远程桌面 macos远程桌面 windows读取剪贴板内容 部署教程 开始使用部署过程共分为三部分:服务器端、受控端和控制端,下面以debian系统进行举例。 服务器端部署 在服务器上下载对应的安装包并解压到任意目录 使用以下命令启动服务器端程序 sudo ./np-svr -conf server.yaml (可选)开放外网防火墙,默认端口6154 受控端部署 在受控端机器上下载并解压到任意目录 (可选)修改remote.yaml配置文件,修改server地址 使用以下命令启动客户端程序 sudo ./np-cli -conf remote.yaml -user `whoami` 控制端部署 在本地控制机上下载并解压到任意目录 (可选)修改local.yaml配置文件,修改server地址 (可选)修改rule.d目录下的规则配置文件,rule配置方法 使用以下命令启动客户端程序 sudo ./np-cli -conf local.yaml 在以上操作成功后即可在浏览器中通过local.yaml中配置的端口号进行访问,默认地址: http://127.0.0.1:8080 安全连接(可选) 建议使用tls加密连接,使用方式如下 - 修改服务器端的server.yaml文件,配置tls相关文件路径,并重启服务 - 修改受控端的remote.yaml配置,将ssl设置为true,并重启服务 - 修改控制端的local.yaml配置,将ssl设置为true,并重启服务 修改默认连接密钥,修改方式如下 - 使用以下命令生成一个16位随机串 tr -dc A-Za-z0-9 < /dev/urandom|dd bs=16 count=1 2>/dev/null - 修改服务器端的common.yaml文件,将secret设置为新的密钥,并重启服务 - 修改受控端的common.yaml文件,将secret设置为新的密钥,并重启服务 - 修改控制端的common.yaml文件,将secret设置为新的密钥,并重启服务 注册系统服务(可选) 在命令行中使用-action install参数即可将程序注册为系统服务,使用参数-user可设置该服务的启动身份 linux系统使用systemd管理系统服务,windows系统可用services.msc面板启动或停止服务 规则配置所有链接均为正向配置,由连接发起方进行配置 shell规则shell规则用于创建一个网页端的命令行操作页面 - name: shell # 链路名称 target: that # 目标客户端ID type: shell # web shell local_addr: 0.0.0.0 # 本地监听地址 local_port: 8080 # 本地监听端口号 #exec: /bin/bash # 运行命令 # windows默认powershell或cmd # 其他系统bash或sh env: # 环境变量设置 - TERM=xterm name: 该规则名称,必须全局唯一 target: 对端客户端ID type: shell local_addr: 本地监听地址,如只允许局域网访问可绑定在局域网IP地址上 local_port: 本地监听端口号 exec: 连接建立成功后的启动命令 指定该参数:直接使用设定的命令运行 linux系统:优先查找bash命令,若没有则查找sh命令,否则报错 windows系统:优先查找powershell命令,若没有则查找cmd命令,否则报错 env: 进程启动时的环境变量设置连接成功后即可使用浏览器访问local_port所对应的端口来创建shell,如http://127.0.0.1:8080 vnc规则vnc规则用于创建一个网页端的远程桌面操作页面,目前仅支持windows操作系统 - name: vnc # 链路名称 target: that # 目标客户端ID type: vnc # web vnc local_addr: 0.0.0.0 # 本地监听地址 local_port: 5900 # 本地监听端口号 fps: 10 # 刷新频率 name: 该规则名称,必须全局唯一 target: 对端客户端ID type: shell local_addr: 本地监听地址,如只允许局域网访问可绑定在局域网IP地址上 local_port: 本地监听端口号 fps: 每秒钟截屏多少次,最高50连接成功后即可使用浏览器访问local_port所对应的端口来创建vnc,如http://127.0.0.1:5900 注意: 创建vnc连接后远端服务会创建一个子进程进行截屏和键鼠操作, 主进程会在6155~6955之间选一个端口进行监听用于与子进程通信 使用rdp连接的windows主机,需要将np-cli.exe注册为系统服务, 否则在rdp窗口最小化或者rdp连接关闭后将无法刷新 windows2008系统下需要启用sas策略才可使用ctrl+alt+del按钮进行解锁登录页面,配置方法如下: 运行gpedit.msc打开组策略编辑器 找到计算机配置 => 管理模板 => Windows组件 => Windows登录选项 => 禁用或启用软件安全注意序列 在详情中设置为已启用,设置允许哪个软件生成软件安全注意序列为服务 性能占用在vmware环境下创建4C2G(AMD Ryzen 7 4800U with Radeon Graphics)测试环境,并进行all in one部署server、remote端和local端,使用bench规则进行压测,结果如下: 压测结果仅包含local端发起连接到remote端收到连接并返回成功的整个过程 实验结果表明,在4C2G环境下可达到上万+的qps,且p99和p100均在60ms以下 未来开发计划 TODO 支持include的yaml配置文件 通用的connect、connect_response、disconnect消息 dashboard页面 文件传输 web远程桌面 流量监控统计页面,server还是client? web端管理规则 支持录屏 项目源地址https://github.com/lwch/natpass |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |