![有趣的安全复制行为](https://linux22.com/image/24399/%E6%9C%89%E8%B6%A3%E7%9A%84%E5%AE%89%E5%85%A8%E5%A4%8D%E5%88%B6%E8%A1%8C%E4%B8%BA.png)
我不完全确定在哪里问这个问题,所以如果这不是正确的地方,请告诉我,我会移动它。
今天,我尝试使用递归 scp 在两个 Linux 服务器之间复制目录,但在引用目标服务器时犯了一个拼写错误。它没有将目录传输到另一台机器,而是开始将文件传输回自身。由于目录太大,我花了一段时间才注意到它在做什么,但后来我开始看到相同的文件在传输状态上一次又一次地弹出,直到我杀死它。这让我很困惑,这是允许的,我有几个问题。
不过,我想我想问大家的主要问题是,是否存在用户需要在同一台计算机上为自己制作安全副本的情况,或者这是否是 scp 的不必要的副作用耸耸肩?
编辑 - 对不起,伙计们,这是实际的命令
scp -r /path/to/dir SameUser@sameserver:/path/to/dir
答案1
对于在同一台计算机上复制文件,您scp
根本不需要。无论如何,如果您指定一个目录或文件作为目标而不是主机名和路径,它会在本地为您复制它,这似乎就是发生的情况。如果您提供您使用的命令行,我们可以告诉您到底发生了什么。
编辑:
使用提供的命令行,它的作用是通过网络接口,连接到本地计算机上的 SSHD 服务器,然后进行复制。没有充分的理由,因为您可以使用cp
.
答案2
这是一个很少有用的特殊情况。但检测它是困难的、有害的且无用的。
很难,因为你怎么知道是同一台机器上的同一个用户?有很多罕见的边缘情况,甚至ssh $USER@localhost
不联系同一个帐户,并且该scp
程序并不总是能够告诉。例如:
localhost
ssh_config
由于非常规但合法的 DNS 或别名,不指向本地计算机。ssh
从 chroot 内部调用,但 ssh 服务器在 chroot 外部或不同的 chroot 中运行。- 本地计算机上的 ssh 端口将连接退回到另一台计算机。
scp
从权限降低的会话中调用;在 的远程站点上scp $USER@localhost
,用户的默认权限保持不变。
scp
有害的,因为它会使很多人的行为变得复杂。它不再是“复制文件,使用 SSH 作为传输”,而是“复制文件,使用 SSH 作为传输,除非检测到源和目标是同一台计算机上的同一用户”。恶心。然后,如果有人编写了一个恰好使用 scp 的脚本,并以机器名和用户名作为参数,则该脚本必须包含一个特殊情况:如果源和目标恰好是同一台机器上的同一帐户,则调用cp
instea的scp
。剧本作者必须scp
完全符合逻辑。
无用,因为它只能发现众多可能的拼写错误中的一个。何必呢?您可能输入了不同服务器的名称,或者错误输入了路径或用户名等。