Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。完全开源,GPL授权
./jms start
命令将会下面服务
打开web terminal link 后,进入luna, luna 会通过api请求jms 的资源列表,进行树状展示
当需要进行RDP访问时,会向guacamole进行post请求 /guacamole/api/session/ext/jumpserver/asset/add
使用 mstsc.js 实现web版的javascript RDP client -https://github.com/citronneur/mstsc.js (很老的框架) 使用 socket.io 和画布来绑定 mstsc.js 后端。 前端通过 rle.js 文件完成位图的解压缩
webterminal 前端由luna 里的html5 canvas 和js 渲染出来
Luna 使用了 "guacamole-common-js": "1.1.0", 提供了 Guacamole client的实现 http://guacamole.apache.org/doc/guacamole-common-js/
<div class="window" [ngClass]="{'active':view.active}" style="height: 100%">
<elements-ssh-term
[view]="view"
[host]="view.host"
[sysUser]="view.user"
*ngIf="view.type=='ssh'"
>
</elements-ssh-term>
<elements-guacamole
[view]="view"
[host]="view.host"
[sysUser]="view.user"
[remoteAppId]="view.remoteApp"
*ngIf="view.type=='rdp'"
>
</elements-guacamole>
<app-sftp *ngIf="view.type=='sftp'" [host]="view.host"></app-sftp>
</div>
操作的录制: ssh 是由koko基于websocket data完成; rdp 是由Guacamole API 完成
操作的回放:由 luna进行 replay 展示的,对ssh 录像(.json) 进行分割处理,使用js渲染成动画;
<elements-replay-json [replay]="replay" *ngIf="replay.type=='json'"></elements-replay-json>
<elements-replay-guacamole [replay]="replay" *ngIf="replay.type=='guacamole'"></elements-replay-guacamole>