Casvisor
资产

协议

SSHVNCRDPTelnet
默认端口225900338923
由谁处理Casvisor(Go)Casvisor(Go)Casvisor(Go,gordp)guacd
浏览器里xterm.js终端noVNC画布画布Guacamole终端
登录方式密码、keyboard-interactiveVNC密码用户名和密码,经NLA认证用户名和密码
复制、粘贴动作暂未限制由前端限制暂时没有剪贴板由guacd限制
需要guacd否否否是

SSH

Casvisor用Go的golang.org/x/crypto/ssh连接,申请xterm-256color终端,通过WebSocket转给浏览器里的xterm.js。终端大小跟随浏览器窗口。

还不支持:用私钥登录、校验服务器的主机密钥(目前和guacd的默认行为一样,接受任何主机密钥),以及通过Casvisor用自己的ssh客户端、scp或SFTP连接。这三项都在路线图上。终端用的是浏览器自己的复制粘贴,所以权限里的复制和粘贴目前限制不了它。

VNC

Casvisor自己建立到VNC服务器的TCP连接,完成RFB握手,包括VNC密码认证。浏览器里的noVNC拿到的是一个无需认证的连接,所以VNC密码一直留在服务器上。如果服务器拒绝了密码,它给出的原因会显示给用户。

画面上方的工具栏有全屏、剪贴板对话框和Ctrl+Alt+Del等组合键。只有权限里有复制时,服务器上的剪贴板内容才会传给用户;有粘贴时,文字才会发到服务器。这项检查在前端执行。

RDP

Casvisor用gordp自己连接RDP,这是为Casvisor写的纯Go RDP客户端。Casvisor和服务器协商TLS和网络级身份验证(NLA,即CredSSP加NTLMv2),用资产的账号登录,把画面以图块的形式发给浏览器,鼠标和键盘再反向传回去。密码不会离开服务器。已在默认配置的Windows Server 2022上测试过。

还不支持的:

  • 剪贴板。 没有剪贴板通道,不论权限怎么写,两个方向都复制不了。
  • 调整大小。 桌面大小取连接建立时浏览器区域的大小,之后不变;要改就重新连接。
  • 服务器证书。 接受任何证书,和大多数RDP客户端对待自签名服务器证书的做法一样。
  • 磁盘映射、文件传输和远程应用。 权限里的上传和下载动作是为文件传输预留的。
  • 较新的图像编码(RemoteFX、GFX、H.264)。服务器会退回到gordp能解码的位图编码。
  • 旧版RDP安全层。 只支持它、不支持TLS或NLA的服务器连不上。

Telnet

Telnet经由guacd,显示为终端。权限里没有复制时,Casvisor会给guacd设置disable-copy,远端剪贴板的内容不会到浏览器;没有粘贴时设置disable-paste。两项都由guacd执行,用户无法在浏览器里绕过。Telnet适合只有它可用的网络设备和老系统;Casvisor和设备之间的所有内容都是明文传输。

guacd

只有Telnet需要guacd。Casvisor通过guacamoleEndpoint(默认127.0.0.1:4822)连接它。all-in-one Docker镜像在容器里自带一个;其他情况下运行官方镜像:

docker run -d --name guacd -p 4822:4822 guacamole/guacd

真正去连Telnet主机的是guacd,所以guacd本身要能访问到它们。不要把4822端口开放到Casvisor所在主机以外:guacd自己没有认证。

Telnet也改用Go实现、让一个程序覆盖所有协议,在路线图上。

在GitHub上编辑

本页内容