如何检查当前有多少个 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 )'
查看过滤器语法的详细说明以及其他答案/评论中的源链接这里。