显示哪个远程文件正在写入我的文件

显示哪个远程文件正在写入我的文件

我知道这听起来很有趣。我编写了一个 shell 脚本并在远程机器上执行,以便通过 ssh 返回我的本地机器来写入一些文件。我在各种远程机器上执行了该脚本,但我记不清它们在哪里了。现在我无法关闭其中的一个或多个,因为我忘记了它们在哪台机器上,而且它们不断在我的本地机器上创建新文件。那么,有没有办法查看哪台远程机器正在访问我的本地文件?我正在运行 Debian 操作系统,但我没有 root 访问权限。

编辑:我尝试删除受影响的文件,但一旦删除它们,远程计算机上运行的脚本就会创建新文件。我还尝试chmod 000使目录不可写,希望使脚本崩溃。这些都不起作用。

答案1

所有 ssh 登录尝试都应记录在 /var/log/auth.log 中,检查该文件可能有助于您找到那些远程机器。

答案2

你可以做

$ while true; do netstat -an | grep \:22 |  cut -b45-90 | grep -v \:22 | grep ESTABLISHED >> watch22.txt; sleep 5; done 

因此,这会将任何端口 22 的连接放入源自盒子的文件中,该文件会很快变得非常大,因为它会在没有任何事情发生时继续添加相同的连接。但如果你运行它足够长的时间,你就会抓住罪魁祸首:

$ cat watch22.txt

146.148.41.2:44996      ESTABLISHED
10.2.1.25:52414         ESTABLISHED
146.148.41.2:44996      ESTABLISHED
10.1.1.25:52414         ESTABLISHED
146.148.41.2:44996      ESTABLISHED

你可以很轻松地将其过滤为唯一 IP 列表:

$ cat watch22.txt | cut -d\: -f1 | sort -u
10.1.1.25
146.178.41.2

答案3

我想推荐一个简单的实用程序 whowatch。它将向您显示登录到系统(它在其上执行)的用户。从那里您可以选择用户(如果使用 ssh,将显示“sshd”)并终止/中断树中的主进程(断开会话)-但这需要 root 权限。

然而,使用 whowatch,您将能够轻松地看到谁登录了谁以及使用了什么。

相关内容