如何在非公共机器之间使用 ssh/scp

如何在非公共机器之间使用 ssh/scp

我经常会遇到以下的情况:

我有两台机器,A 和 B,它们位于 LAN 上,并且具有非公共 IP 地址。机器 C 与 B 位于同一 LAN 上,但公开可见。我想将文件从 B 复制到 A,因此我必须:

  • ssh 到 C
  • 从 C 到 B 的 ssh
  • 将文件从 B 复制到 C
  • scp 文件从 C 到 A

鉴于 ssl 可以通过从 B 到 A 的隧道显示透明地完成许多奇妙的事情,似乎也可以对文件执行同样的事情。

有没有办法使用标准 ssh/scp 从 B 复制到 A,而不必在 C 上创建临时副本?

答案1

您想设置端口转发。当您通过 SSH 从机器 A 连接到机器 B 时,添加一个隧道,即在通过隧道连接到 B 时添加 -L 1234:A:22。然后通过 SSH 连接到机器 C 并将文件通过端口 1234 复制到 B(即在 scp 中添加 -P 1234)。这实际上会路由到机器 A 上的端口 22,即 ssh 端口,因此它将直接传输。

我现在没有三台机器可以尝试这个,但我认为这应该可行。

答案2

如果您可以从 C ssh 到 B 并从 C scp 到 A,那么我认为您应该能够直接从 C 使用 scp。

(以 aa.aa.aa.aa 作为 A 的 IP 地址,以 bb.bb.bb.bb 作为 B 的 IP 地址)

  • ssh 进入 C
  • 在 C 上的命令行中:

    scp bb.bb.bb.bb:/path/to/file aa.aa.aa.aa:/path/to/destination

相关内容