有趣的安全复制行为

有趣的安全复制行为

我不完全确定在哪里问这个问题,所以如果这不是正确的地方,请告诉我,我会移动它。

今天,我尝试使用递归 scp 在两个 Linux 服务器之间复制目录,但在引用目标服务器时犯了一个拼写错误。它没有将目录传输到另一台机器,而是开始将文件传输回自身。由于目录太大,我花了一段时间才注意到它在做什么,但后来我开始看到相同的文件在传输状态上一次又一次地弹出,直到我杀死它。这让我很困惑,这是允许的,我有几个问题。

不过,我想我想问大家的主要问题是,是否存在用户需要在同一台计算机上为自己制作安全副本的情况,或者这是否是 scp 的不必要的副作用耸耸肩?

编辑 - 对不起,伙计们,这是实际的命令

scp -r /path/to/dir SameUser@sameserver:/path/to/dir

答案1

对于在同一台计算机上复制文件,您scp根本不需要。无论如何,如果您指定一个目录或文件作为目标而不是主机名和路径,它会在本地为您复制它,这似乎就是发生的情况。如果您提供您使用的命令行,我们可以告诉您到底发生了什么。

编辑: 使用提供的命令行,它的作用是通过网络接口,连接到本地计算机上的 SSHD 服务器,然后进行复制。没有充分的理由,因为您可以使用cp.

答案2

这是一个很少有用的特殊情况。但检测它是困难的、有害的且无用的。

很难,因为你怎么知道是同一台机器上的同一个用户?有很多罕见的边缘情况,甚至ssh $USER@localhost不联系同一个帐户,并且该scp程序并不总是能够告诉。例如:

  • localhostssh_config由于非常规但合法的 DNS 或别名,不指向本地计算机。
  • ssh从 chroot 内部调用,但 ssh 服务器在 chroot 外部或不同的 chroot 中运行。
  • 本地计算机上的 ssh 端口将连接退回到另一台计算机。
  • scp从权限降低的会话中调用;在 的远程站点上scp $USER@localhost,用户的默认权限保持不变。

scp有害的,因为它会使很多人的行为变得复杂。它不再是“复制文件,使用 SSH 作为传输”,而是“复制文件,使用 SSH 作为传输,除非检测到源和目标是同一台计算机上的同一用户”。恶心。然后,如果有人编写了一个恰好使用 scp 的脚本,并以机器名和用户名作为参数,则该脚本必须包含一个特殊情况:如果源和目标恰好是同一台机器上的同一帐户,则调用cpinstea的scp。剧本作者必须scp完全符合逻辑。

无用,因为它只能发现众多可能的拼写错误中的一个。何必呢?您可能输入了不同服务器的名称,或者错误输入了路径或用户名等。

相关内容