rsync 的独特情况

rsync 的独特情况

参考:
如何进行多跳 SCP 传输?
https://stackoverflow.com/questions/732039/rsyncing-files-between-two-remote-servers-get-errors-stating-rsync-command-not
http://ubuntuforums.org/showthread.php?t=748431

我遇到了一种情况,我真的希望能有一个解决方案,尽管在过去的几个小时里我还没有找到任何东西。

我有两台服务器无法互相通信,我需要在它们之间传输数据。这是一种相当常见的情况,可以通过一些 scp 技巧轻松解决。下面是陷阱。

一台服务器通过VPN访问,vpnserver另一台服务器targetserver通过跳转主机访问jumphostserver

我已经ProxyCommand设置允许我通过代理连接,jumphostserver并且targetserver我正在使用 SSH Mux 东西(ControlMaster/ ControlPersist/ ControlPath)来允许所有打开的连接共享。

我的本地机器可以使用以下命令在两个服务器之间正确地 scp 操作:

scp -3 vpnserver:/path/to/file targetserver:/path/to/destination

我还可以直接将内容从 rsync 复制vpnserver到我的本地计算机,也可以将内容从我的本地计算机复制到targetserver(使用通过的 ssh 代理jumphostserver

我需要做的是让我的机器以允许的方式充当中介scp -3,但使用rsync,以便权限、所有权以及(更重要的是) ACL 被正确复制到targetserver

我曾考虑尝试 NFS 导出vpnserver和的文件系统targetserver(通过重新导出jumphostserver),但我无法控制jumphostserver,只能控制vpnservertargetserver

答案1

如果存在网络连接,则这两个主机中的其中一个可以登录到另一个主机,要么使用其中一个主机上的 SSH ID 密钥在另一台主机上的 authorized_keys 中识别,要么使用密码,并且如果端口转发未被禁用,并且如果通过本地机器运行此流量是可以的,那么这几乎总是可以通过端口转发来完成。

假设您的本地机器为主机 A,并且主机 B 拥有使用 SSH 登录主机 C 的凭证,只要它能够到达主机 C。

  1. 使用执行反向端口转发的选项登录到主机 B,监听计算机 B 上的端口 2222 并连接到本地主机上的端口 3333(这将在计算机 A 上发生)。在 Linux 上,此选项为“-R 2222:本地主机:3333“。

  2. 使用常规端口转发登录到主机 C,监听机器 A 上的端口 3333 并连接到本地主机上的端口 22(这将在机器 C 上发生)。在 Linux 上,此选项为“-L 3333:本地主机:22“。

  3. 在主机 B 上启动到主机 C 的测试 SSH 会话,以查看是否所有设置都正确。要执行的命令是“ssh -p2222 用户名onhostc@localhost“。如果所有设置都正确,它将连接到 B 上的端口 2222,转发到 A 上的端口 3333,然后转发到 C 上的端口 22。如果您的密钥正确,您可以直接登录。否则,您应该会收到密码提示。输入密码以确保无误。

如果可以正常连接,请关闭该测试连接,然后继续执行下面的#4 或#5。

  1. 要将文件从 B 发送到 C,请在 B 上执行以下操作: rsync -e "ssh -p2222" -av /其中/到/获取/文件/.usernameonhostc@localhost:/其中/到/放置/文件

  2. 要将文件从 C 发送到 B,请在 B 上执行以下操作:rsync -e“ssh -p2222" -av usernameonhostc@localhost:/where/to/get/files/. /where/to/put/files

如果您需要通过互联网在机器之间传输大量数据,因为您的本地访问带宽有限,那么它将变得更加复杂,需要了解 B 和 C 上的网络限制,甚至可能无法实现。

将字符串“useronhostc”替换为您在主机 C 上使用的用户名。保留“localhost”原样或仅将其更改为“127.0.0.1”。为所示示例提供正确的路径。删除“/。” 如果它只是一个文件,则位于源路径末尾。

请记住,您必须同时登录 B 和 C(从 A)。建议使用单独的 xterminal 窗口。这些 ssh 登录都将进行端口转发。但您也可以通过它们执行命令。您可以选择除示例中所示的 2222 或 333 之外的其他端口号。除非主机 C 出于某种原因监听不同的端口(我对我的服务器这样做...我没有告诉您哪个端口),否则可能需要端口 22。如果您更改端口 2222 和/或 3333,您可能必须使用 1024 或更大的数字。从技术上讲,您甚至可以对两者使用相同的数字,因为监听是在不同的机器上。

答案2

如果两个系统都可以访问互联网,你可以安装来自 ntop 的 n2n 包在系统之间创建主机到主机的 VPN 链接。

相关内容