![Debian Lenny 机器的远程桌面视图](https://linux22.com/image/25143/Debian%20Lenny%20%E6%9C%BA%E5%99%A8%E7%9A%84%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E8%A7%86%E5%9B%BE.png)
让我总结一下我的项目规范。我在同一个 LAN 上有一个 Windows 服务器和一堆 Debian 客户端,Debian 机器没有 x window 系统,它们必须使用命令行。我在系统启动时运行 QT 应用程序,因此用户在看到其他任何内容之前只与我的 GUI 交互。
根据我的项目要求,我们应该允许系统管理员随时查看最终用户在 Debian 机器上正在做什么,因此他应该能够随时看到他们的屏幕。他将使用 Windows 机器来完成此操作。因此我想知道是否可以与 Windows 服务器共享 Debian 的屏幕,以及其中涉及什么。
我是否需要在 Debian 计算机上设置 VNC 服务器才能实现此目的?还有其他办法吗?
答案1
如果您仅在客户端使用终端(您说您没有在客户端主机上运行任何类型的 xserver),我建议您如何实现此目的。它实际上是一个最小但易于扩展的示例,展示了如何监视远程主机上的终端会话。我不知道有什么特殊的软件可以做到这一点,可能有很多方法可以更优雅地实现这一点,所以请不要期望太多。
我的第一个建议是安装rootsh
在客户端。
它是 shell 的包装器,它将所有回显的击键和终端输出记录到文件和/或系统日志中 [根什网站]
不幸的是,你的 debian 存储库没有包含它,所以你必须制作自己的二进制文件。这很容易实现,因为 rootsh 没有花哨的依赖项。此外socat
,您还需要一个用于双向数据传输的工具。
如果你调用rootsh
像
./rootsh -i -f logfile
新的登录 shell 会启动从该 shell 到终端上回显的所有内容,或者写入任何子进程logfile
(还有最初用于 tty 的特殊字符)。
现在您可以使用以下命令在客户端上创建 TCP 套接字
socat OPEN:logfile,ioreeof TCP-LISTEN:22222,fork
您可以从中读取管理员主机的信息。例如与
socat TCP:clientdomain:22222 STDOUT
或使用netcat
ie telnet
(socat 的 Windows 二进制文件可用)。
如果您希望在节点之间拥有更安全的数据流,您还可以指示socat
通过 对其进行加密OPENSSL
。您可以在文章中找到对此的很好的解释使用 SSL 保护两个 Socat 实例之间的流量。
我承认我的方法有几个缺陷,但它足以说明没有任何特殊工具的可能性。