如何在两台服务器之间执行安全的自动文件传输?

Jos*_*din 10 ssh security scp

我想每天将一些文件从服务器 A 传输到服务器 B(用于备份目的)。但是,我找不到一种不会造成安全漏洞的方法。我的目标是在服务器 A 上拥有 sudo 权限的人无法利用此传输连接到服务器 B。

我的基本想法是使用其中的(或类似)命令执行 cronjob scp。显然,在 A 和 B 之间使用基于密码的 SSH 连接是行不通的,据我所知,使用基于密钥的 SSH 连接将允许服务器 A 的用户通过 A 直接连接到 B。

我不是安全专家,我可能错过了这里显而易见的事情。有办法实现我想要的吗?

我也不希望服务器 B 的用户能够连接到服务器 A。

pa4*_*080 21

您无法向拥有 root 访问权限的人隐藏系统上的任何内容。即使您在登录时使用加密的主目录,它也会被解密,并且根用户可以访问数据。

完成此任务的最简单方法可能是设置第三个实例,该实例能够通过 SSH 登录到服务器 A 和服务器 B。然后您可以使用命令(scp在第三个实例上)从 A 复制文件按以下方式转至B。

scp -3 serverA:/path/to/the/file serverB:/path/to/store/
Run Code Online (Sandbox Code Playgroud)
  • 主机serverA和在第三个实例serverB中配置。~/.ssh/config

请注意选项-3,它会导致第三个实例作为中间服务器运行。如果未提供此选项,服务器 A 将被指示连接到服务器 B,但它将需要凭据。此选项禁用进度表。

答案的长版本可以在历史记录中找到。


miv*_*ivk 6

rsync像往常一样在 cronjob 中使用。

在 rsync 客户端上,具有“sudo”权限的用户将能够看到访问rsync 服务器共享的特定文件夹所需的用户名和密码。

但这些凭据与用户凭据是分开的,并且不会授予对服务器的 SSH 访问权限。因此,如果配置正确,他们将在服务器上访问的只是来自自己计算机的备份。

在 rsync 服务器上,没有任何东西可以访问 rsync 客户端。