两个遥控器之间的rsync
Rsync between two remotes
我需要在远程主机之间执行 rsync(原因稍后),rsync 不支持(参见手册页)。但是,我认为应该可以使用 ssh 隧道。到目前为止我无法让它工作,我认为我做错了什么。看看下面的片段:
ssh -R localhost:50000:remotesource:22 user@localpc -f -N
sleep 5 #To wait for the tunnel to establish
ssh user@remotedestination rsync -e "ssh -p 50000" --progress --append-verify user@localpc:~/sourcefiles ~/destdir'
这基本上是在rsync 内部ssh 认证过程中挂掉的。只是为了测试它,我连接到 remotedestination 并尝试通过隧道 ssh 到 remotesource 并且成功了! rsync 有什么不同的地方我忘记了吗?
我为什么要这样做?尽管有普遍的好奇心,但事实是 remotesource 是一台计算机,我只能从中提取数据而不能推送数据,而 remotedestination 只有一个共享帐户。由于经常出现连接问题,我想编写一个脚本以在出现错误时重新启动 rsync。为此,我需要通过密钥文件进行身份验证(未安装 sshpass 或类似文件)。但我肯定不会将我的私钥存储在共享帐户的主目录中。因此,我希望通过我的本地电脑进行身份验证。
希望有人能指出我的错误,我没有看到:-) 谢谢!
我认为你在这里陷入了困境!
创建转发到端口 22 的端口唯一有用的情况是在绕过防火墙进行路由时。它不会帮助您避免身份验证。在任何情况下,您的隧道只接受来自 "localpc" 上的进程 运行 的连接,因此 "remotedestination" 上的 rsync 运行 无法使用它。
如果您不希望将凭据泄露到 "remotedestination" 上的共享帐户中,并且无法进行交互式密码输入,那么事情就有点棘手了。您可以使用受 authorized_keys 限制的密钥,但这仍然不完全安全。您可以使用 ssh -A
将您的 ssh-agent 连接转发到 "remotedestination",但是具有相同用户访问权限的窃听者也可以使用该套接字(这种方法至少相当隐蔽,如果您实际上不是面对真正的黑客的间谍)。
可能最安全的方法是从 "remotesource" 开始传输,在那边使用 ssh -A
代理转发。
或者,如果数据不大或增量更新不是重点,您可以尝试 scp
。这可以处理远程源和目标,如果可以的话,甚至可以直接将数据从源直接移动到目标。缺点是它总是会尝试复制所有数据。
我需要在远程主机之间执行 rsync(原因稍后),rsync 不支持(参见手册页)。但是,我认为应该可以使用 ssh 隧道。到目前为止我无法让它工作,我认为我做错了什么。看看下面的片段:
ssh -R localhost:50000:remotesource:22 user@localpc -f -N
sleep 5 #To wait for the tunnel to establish
ssh user@remotedestination rsync -e "ssh -p 50000" --progress --append-verify user@localpc:~/sourcefiles ~/destdir'
这基本上是在rsync 内部ssh 认证过程中挂掉的。只是为了测试它,我连接到 remotedestination 并尝试通过隧道 ssh 到 remotesource 并且成功了! rsync 有什么不同的地方我忘记了吗?
我为什么要这样做?尽管有普遍的好奇心,但事实是 remotesource 是一台计算机,我只能从中提取数据而不能推送数据,而 remotedestination 只有一个共享帐户。由于经常出现连接问题,我想编写一个脚本以在出现错误时重新启动 rsync。为此,我需要通过密钥文件进行身份验证(未安装 sshpass 或类似文件)。但我肯定不会将我的私钥存储在共享帐户的主目录中。因此,我希望通过我的本地电脑进行身份验证。
希望有人能指出我的错误,我没有看到:-) 谢谢!
我认为你在这里陷入了困境!
创建转发到端口 22 的端口唯一有用的情况是在绕过防火墙进行路由时。它不会帮助您避免身份验证。在任何情况下,您的隧道只接受来自 "localpc" 上的进程 运行 的连接,因此 "remotedestination" 上的 rsync 运行 无法使用它。
如果您不希望将凭据泄露到 "remotedestination" 上的共享帐户中,并且无法进行交互式密码输入,那么事情就有点棘手了。您可以使用受 authorized_keys 限制的密钥,但这仍然不完全安全。您可以使用 ssh -A
将您的 ssh-agent 连接转发到 "remotedestination",但是具有相同用户访问权限的窃听者也可以使用该套接字(这种方法至少相当隐蔽,如果您实际上不是面对真正的黑客的间谍)。
可能最安全的方法是从 "remotesource" 开始传输,在那边使用 ssh -A
代理转发。
或者,如果数据不大或增量更新不是重点,您可以尝试 scp
。这可以处理远程源和目标,如果可以的话,甚至可以直接将数据从源直接移动到目标。缺点是它总是会尝试复制所有数据。