通过复杂的 ssh 连接复制文件?

900*_*000 2 ssh file-copy

假设我有主机A,我从它 ssh 到主机B,在那里 Isudo -U some_role和从它 ssh 到主机C。我的目标是C上的交互式 shell 。

假设从C I 不能 ssh 回到A

使用上面建立的连接将文件A复制C的最佳方法是什么?我应该在链中引入哪些准备/更改以使不频繁的简单文件复制成为可能?

当然,我可以cat > target_file在交互式 shell 中运行并通过终端复制粘贴,但是对于大型二进制文件,这并不十分方便。

Tho*_*erk 7

我认为主机 B 是例如 Intranet 中的网关,可以连接到主机 A 和 C,例如:

                                                                       -----------------------------------------------------------
                                                                      |                                                           |
                                                                      |                                                           |
                       ---------                                -----------                    --------------                     |
                      |A        |------------------------------|   B       |------------------|              |                    |
                       ---------                               |           |                  | C            |                    |
                                                                -----------                    --------------                     |
                                                                      |                                                           |
                                                                       -----------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

在这种情况下,最好的解决方案是 ssh 端口转发。我在http://www.linuxintro.org/wiki/Tunneling_with_OpenSSH 上描述了它

首先,在 A 上,您使用以下命令将 B 的端口 2222 隧道连接到 C 的端口 22:

ssh -L 2222:C:22 B
Run Code Online (Sandbox Code Playgroud)

然后通过使用以下命令连接到 A(本地主机)上的端口 2222,复制到 C 的端口 22:

scp -P 2222 file root@localhost:
Run Code Online (Sandbox Code Playgroud)