如何在中间有服务器的两台计算机之间传输文件?
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
。
建立隧道
ssh -f -N university-server -L 2222:PC-02:22
隧道将保留在后台,直到 ssh
进程被终止
scp文件传输
scp -P 2222 user@localhost:file .
scp -P 2222 file user@localhost:path
服务器端禁用 ssh 隧道时的替代答案:
PC-2
到 PC-1
ssh university-server 'ssh PC-2 "cat remotefile"' > localfile
PC-1
至 PC-2
ssh university-server 'ssh PC-2 "cat > remotefile"' < localfile
解释:
您要求 university-server
使用指定命令(在本例中为 cat
)通过 ssh 连接到 PC-2
,并使用管道重定向写入或读取本地文件
PS: 根据评论中的工作更正修改答案
我家里有一台 PC-1,需要在我大学的 PC-2 上来回传输文件。
问题是 PC-2 只能访问本地网络。
因此,为了从家里访问它,我必须先通过 ssh 连接到大学服务器,然后再通过 ssh 连接到 PC-2。
我知道 scp 可以在两台 PC 之间传输文件,但是在中间有服务器的情况下没有在文档中找到任何内容。
可以用scp或者其他工具完成吗?
您可以使用 ssh tunnel,使用 university-server
作为中间件从 PC-1
连接到 PC-2
。
建立隧道
ssh -f -N university-server -L 2222:PC-02:22
隧道将保留在后台,直到
ssh
进程被终止scp文件传输
scp -P 2222 user@localhost:file .
scp -P 2222 file user@localhost:path
服务器端禁用 ssh 隧道时的替代答案:
PC-2
到PC-1
ssh university-server 'ssh PC-2 "cat remotefile"' > localfile
PC-1
至PC-2
ssh university-server 'ssh PC-2 "cat > remotefile"' < localfile
解释:
您要求 university-server
使用指定命令(在本例中为 cat
)通过 ssh 连接到 PC-2
,并使用管道重定向写入或读取本地文件
PS: 根据评论中的工作更正修改答案