创建 ssh 隧道来传输文件?

创建 ssh 隧道来传输文件?

对我来说,网络是一个非常“不透明”的东西,即使阅读了很多关于 SSH 的教程,我仍然不明白如何创建一个基本的隧道来传输我的文件。

配置如下:

My Computer --[Internet]--> Bridge Machine --[Local Network]--> Final Machine

目前我做以下事情:

1) Connect to the Bridge Machine with :
ssh -X [email protected]

2) Connect to the Final Machine with :
ssh -X username@finalmachine

3) I copy the address of files I need (for example .../mydirectory)

4) Then I deconnect from the finalmachine with :
exit

5) I copy the files to the bridge :
scp -r username@finalmachine:/.../mydirectory .

6) I deconnect from the bridge with :
exit

7) I copy the files to my machine :
scp -r [email protected]:/.../mydirectory .

这相当复杂。我的问题很简单:如何使用 SSH 隧道简化这一过程?

(请向我解释您所写的每个命令行的含义,以便我了解每行实际的作用,并避免将其当作神奇的东西来使用。此外,如果使用了一些端口号,请向我解释我是否可以选择一个完全随机的数字,或者我是否必须选择一个特定的数字。)

答案1

设置 ssh 配置文件:

~/.ssh/config

此文件将以多种方式提供帮助,但最终将允许您通过一个步骤完成所有操作。

首先,为每台机器设置别名

Host bridge
User username

Host final
User username

现在您可以使用“ssh -X bridge”连接第一台机器。

对于下一步,您需要在每台机器上使用 netcat(尝试“which nc”)进行检查。然后,使用带有“最终”机器配置的 ProxyCommand,如下所示:

Host final
User username
ProxyCommand ssh -CAYq bridge exec nc %h %p

此命令将您想要的任何内容通过中央机器发送到端口 %p 上的主机 %h(这意味着如果您想通过不同的端口发送其他应用程序数据,您可以 - 只要此连接处于打开状态)

如果您已设置密钥,则也不会出现密码提示,如果没有:系统将首先提示您输入桥接密码,然后提示您输入最终密码。

现在“ssh final”应该可以工作了,并且:

scp -r final:/.../directory .

相关内容