如何知道谁通过 vnc 连接到我的机器?

如何知道谁通过 vnc 连接到我的机器?

如何检查当前有多少个 vnc 连接或不同的用户连接到我的计算机?只能通过wireshark吗?如何杀死通过 vnc 连接的其他用户?

答案1

在 Linux 上,

ss sport = :5900

会告诉您当前在端口 5900 上建立的 TCP 连接。

对于其他任何事情,我们需要知道您正在使用什么 VNC 服务器,因为存在数十个。

如果您知道 VNC 服务器命令的名称,

lsof -ai tcp -c that-command

(作为运行 VNC 服务器的用户或 root)还会告诉您该 VNC 服务器处理的当前建立的 TCP 连接(如果它不在端口 5900 上)。

一般情况下关闭 TCP 连接的方法有:

  • tcpkill(来自dsniff包)伪造会关闭连接的 TCP 数据包。
  • iptstate(Linux)。如果您使用的是全状态防火墙。您可以从 Linux 连接跟踪器表(x在 中)中删除连接iptstate,这通常会导致较新的数据包被忽略(如果防火墙配置为仅接受带有 TCP SYN 的新连接)。它不会终止连接,只是使其处于非活动状态。
  • 添加防火墙规则以拒绝在该连接中传输/接收的更多数据包(在 Linux 上,iptables目标为“REJECT”,匹配 OUTPUT 和 INPUT 过滤器链中的源和目标 TCP 端口以及 IP 地址)
  • 将 gdb 连接到正在运行的 vnc 服务器并执行call close(fd)其中 fd 是相应套接字的文件描述符(您可以使用 找到lsof),然后执行detach(这可能会使 vnc 服务器感到困惑,调用shutdown而不是close可能更安全)。

答案2

根据本文以下命令将显示与包含“VNC 命令行”的进程的连接:

# sudo netstat -p | grep <name of VNC command-line>

更新

请注意,该netstat命令必须运行为root

答案3

假设您的 vnc 服务器是 Xvnc,请尝试以下一行:

lsof -Pni | grep Xvnc | grep -v LISTEN

这将列出活动连接并显示它们的进程 PID 和 IP 地址。

答案4

我一直在寻找类似的命令来找出我的 vnc 服务器正在侦听哪些端口,这就是我想到的。

ss -a -t '( dport >= :5900 & dport <= :5999 | sport >= :5900 & sport <= :5999 )'

查看过滤器语法的详细说明以及其他答案/评论中的源链接这里

相关内容