我可以访问 3 台机器,A、B 和 C。唯一可能的 (ssh) 连接是:
A -> B
B <-> C
Run Code Online (Sandbox Code Playgroud)
我需要从 A 到 C 获取文件,所以我可以将文件从 A scp 到 B,然后将它们从 B scp 到 C。但是,B 没有太多磁盘空间,所以这不是一个选项。有没有办法通过 B 从 A 到 C scp 文件?请注意,我在任何机器上都没有 root 访问权限,所以不要认为我可以设置任何持久隧道,但如果我错了,请纠正我!
我有 3 台计算机/服务器,我们称它们为计算机 A、计算机 B 和计算机 C。
ssh计算机 B访问。ssh计算机 C访问。所以,我想rsync从计算机 A 到计算机 C 的目录,使用计算机 B(因为只有计算机 B 可以通过ssh计算机 C访问)。我想以rsync一种简单的方式使用,如下所示:
rsync -options /path_to_local IpComputerC:/path_to_remote
Run Code Online (Sandbox Code Playgroud)
我正在考虑一个ssh隧道,但我不知道我是否必须进行本地端口转发或远程端口转发,或者是否必须创建两个隧道:一个从 A 到 B,另一个从 B 到 C?
有什么建议??我真的很感激。
**更新:我做到了!!我创建了一个带有本地端口转发的 ssh 隧道,这意味着我使用机器 A 的本地端口通过机器 B 连接到机器 C 上的远程端口。命令的语法是:
ssh -f -N -L local_port_machineA:ip_machineC:remoteport_machineC user_machineB@ip_machineB
Run Code Online (Sandbox Code Playgroud)
在我的情况下,remoteport_machineC 应该是端口 22,因为我想通过 ssh rsync 目录。
之后,我们就可以在机器A上执行rsync命令了,这样:
rsync -avz -e "ssh -p local_port" …Run Code Online (Sandbox Code Playgroud)