我正在运行一台仅允许 ssh 访问的 CentOS 7 计算机。在那台机器上,我运行着许多 QEMU 虚拟机,每个虚拟机都在不同的 VNC 端口上显示。要访问一台机器,我要求人们通过 ssh 连接到该机器并转发所需 VNC 服务器的端口,例如,如果其中一台服务器位于 :25,它们可能会运行
ssh -L 5901:localhost:5925 user@host
然后在他们的本地机器上vncviewer
打开localhost:1
由于这些虚拟机将在许多用户之间共享,作为盒子的管理员,我有没有办法知道谁对每个虚拟机(或任何其他任意端口)进行了端口转发设置?
我可以通过做来看到我自己的,~#
但是有没有一种简单的方法可以为其他用户看到这些?
我现在唯一能想到的就是netststat -panl | awk '$5 ~ /5925/ {print $7 $8}'
对每个感兴趣的端口执行类似操作并重复。有没有更“合适”或更简洁的方法?
答案1
虽然我仍然希望有一种方法可以查询sshd
信息,但我想出了另一种解决方法,它可以告诉我谁对本地主机上的哪些端口打开了端口转发:
lsof -i -n | awk '/sshd.*->127.0.0.1:/ {n=split($9,a,":"); print $3 " " a[n];}'
例如,它将打印
erenouf 5925
erenouf 5926
但前提是我已经尝试使用这些连接,而不仅仅是请求 ssh 进行转发。
这还要求我知道目标 IP,这是我在这个场景中所做的(到目前为止,直到我们添加第二台机器),所以它仍然不能完全令人满意。