如何在中间有服务器的两台计算机之间传输文件?

How to transfer files between two computers with a server in the middle?

我家里有一台 PC-1,需要在我大学的 PC-2 上来回传输文件。

问题是 PC-2 只能访问本地网络。

因此,为了从家里访问它,我必须先通过 ssh 连接到大学服务器,然后再通过 ssh 连接到 PC-2。

我知道 scp 可以在两台 PC 之间传输文件,但是在中间有服务器的情况下没有在文档中找到任何内容。

可以用scp或者其他工具完成吗?

您可以使用 ssh tunnel,使用 university-server 作为中间件从 PC-1 连接到 PC-2

  1. 建立隧道

    ssh -f -N university-server -L 2222:PC-02:22

    隧道将保留在后台,直到 ssh 进程被终止

  2. scp文件传输

    • scp -P 2222 user@localhost:file .
    • scp -P 2222 file user@localhost:path

服务器端禁用 ssh 隧道时的替代答案:

  • PC-2PC-1

    ssh university-server 'ssh PC-2 "cat remotefile"' > localfile

  • PC-1PC-2

    ssh university-server 'ssh PC-2 "cat > remotefile"' < localfile

解释:
您要求 university-server 使用指定命令(在本例中为 cat)通过 ssh 连接到 PC-2,并使用管道重定向写入或读取本地文件

PS: 根据评论中的工作更正修改答案