寻找通过 ssh 访问的远程系统的“操作员在场”指示

寻找通过 ssh 访问的远程系统的“操作员在场”指示

一位年长的亲戚使用 Ubuntu 18.04 + LXDE 桌面,主要用于上网和玩一些文字游戏。他们很少关闭电脑……上次我检查时,它已经开机超过 15 天了。

我通过 ssh 远程管理系统。

当我偶尔需要重启系统时,我希望有某种方法可以确定我的亲戚是否正在使用它,这样我就不会打扰他们。我有时会在半夜重启系统,但他们睡不好,有时会起床玩游戏。

给他们打电话是可以的,但是我们之间相隔好几个时区,有时会把他们吵醒。

如果他们正在玩游戏,我可以看到top,但我无法判断他们是否正在主动使用浏览器。

某种鼠标和/或键盘活动指示器会很棒,但我希望远离任何类型的键盘记录器类型的软件。我怀疑存在这样的“检测到鼠标/键盘活动”的东西 - 让系统进入睡眠状态/激活屏幕保护程序**,如果没有其他目的,则将其唤醒 - 但我找不到它。

** 我不认为他们真的使用了屏幕保护程序,这只是一个例子。我认为电源管理器只是让屏幕变黑。

是否有某处跟踪“自用户上次键盘/鼠标交互以来的时间”?

任何解决方案都需要通过 ssh 来实现。

答案1

有一个实用程序可以打印 X 屏幕的空闲时间:

DISPLAY=":0" xprintidle

它以毫秒为单位打印自上次键盘或鼠标输入以来的时间。


另一个选择是弹出一个问题框:

DISPLAY=":0" zenity --question --text="Organic Marble asks: Are you currently using this computer?" && echo yes

然后,如果几分钟内没有得到答复,只需按 ctrl-c 并继续重新启动。

答案2

如果显示器配置为节能,您可以检查:

xset -display :0 q

看最后一行:

Monitor is Off

答案3

嗯……这只是一个想法,但如果您通过 ssh 登录到您的亲戚正在使用的同一用户,将DISPLAY环境变量设置为:1并运行鼠标对应的数字(您可以使用获取该数字xinput test n,在我的情况下是 9),那么该命令将在鼠标移动时打印一行文本(形式类似于)。因此,您可以将该命令的输出通过管道传输到某个脚本,该脚本将记录上次输入的时间,这样您就会知道鼠标上次移动的时间(当然,这必须在后台不断运行以记录上次鼠标移动的实际时间)。nxinput --listmotion a[0]=338 a[1]=889

答案4

我认为唯一能够绝对确定的方法就是“监视”他们的屏幕。

  1. 使用以下方式在计算机上安装 x11vncsudo apt-get install x11vnc net-tools

  2. (可选)在他们的计算机上创建一个 shell 脚本来自动启动服务器,这样你就不必每次都记住语法了。请注意,-auth可能需要更改参数;我现在只能使用 Fedora 进行测试,Ubuntu 可能会将 auth 文件保存在其他位置。

#!/bin/sh
sudo x11vnc -auth /var/run/lxdm/lxdm-\:0.auth -display :0 -rfbport 5900 -localhost
  1. 在您的计算机上安装您最喜欢的 VNC 查看器应用程序。

  2. 在您的计算机上为端口 5900 设置 SSH 端口隧道。假设您使用 OpenSSH,请将以下内容放入您的.ssh/config文件中:

Host theirhostname
    LocalForward 5900 localhost:5900

当你想真正看看他们的屏幕时:

  1. 像往常一样通过 SSH 进入他们的计算机。

  2. 运行 shell 脚本(或者输入那行大sudo x11vnc代码)。*

  3. 启动您的 VNC 查看器应用程序,并指示它连接到localhost

瞧,您应该能够看到他们的屏幕了。

*注意:你将获得一些警告 VNC 服务器未受密码保护。这不是安全风险,因为 VNC 服务器端口只能在本地访问,这意味着任何攻击者都必须已经登录。但是,如果您真的担心,请使用x11vnc -storepasswd创建密码文件,然后添加-rfbauth /home/user/.vnc/passwdx11vnc命令行。

相关内容