如何配置 SSH 跳转服务器?

如何配置 SSH 跳转服务器?

我想使用 Linux 系统从 Windows 服务器下载文件。但是,我想在两者之间使用 Raspberry Pi 作为 Jump Server。

Linux 客户端(A)------> Pi-jump 服务器(B)---------->Windows 服务器(C)

我想通过 B 从 A 向 C 发送请求,因为我希望 C 获取 B 的 IP 地址而不是 A 的 IP 地址。另外,我希望 C 回复并发送一个文件。

因此,我想做:

tftp -g -t i -f $PATH_FILE $RASPBERRY_PI_IP

我需要如何配置 Pi,以便当我这样做时,我能从服务器获取文件?

我找到了这个命令并在Linux客户端中运行它:

ssh -L 8999:WINDOWS_SERVER_IP:8999 pi@RASPBERRY_PI_IP

但是,它的作用是从 Linux 客户端登录 Pi,而我想要做的只是发送下载文件的命令。

谢谢!!

答案1

设想:

remoteserver (C)在端口 上运行着一个服务remoteport。您想连接到它,但您的本地计算机(A)因某种原因被阻止访问remoteserver (C)remoteport幸运的是,您有 ssh 访问权限tunnelserver (B),因此可以从那里访问remoteportremoteserver (C)因此,您想出了tunnelserver (B)一个好主意,使用跳转服务器:中间跳跃到remoteserver (C)remoteport

localserver (A) -> tunnelserver (B) -> remoteserver (C)

一旦隧道建立起来,您将连接到端口localserverlocalport并通过 ,tunnelserver最终sshport到达。remoteserverremoteport

A:localport -> B:sshport -> C:remoteport

解决方案:

创建 SSH 隧道的方法如下:

 ssh -L <localport>:<remotehost>:<remoteport> -p <tunnelport> <tunneluser>@<tunnelserver>

tunnelserver这将使您以用户身份登录tunneluser;当您注销时,隧道将终止。

填写端口号:

localport将是您在本地机器上连接的端口:选择任何可用的 TCP 端口,即尚未运行某些本地服务的端口。您将知道本地计算机上是否有 Web 服务器,因此将避免使用端口80443。在 Linux 系统上,端口11023默认情况下是特权端口,这意味着只有用户root可以在那里绑定服务(sudo如果您还没有这样做,请在命令前面加上以克服这个问题root)。

remoteportremotehost是远程服务正在侦听的端口。大多数服务都有一个默认端口(因为tftp它是69),如果您更改了它,您就会知道。

sshport是 ssh 服务端口tunnelserver:如果您没有更改它的默认值,那么22您可以完全省略该-p <tunnelport>参数。

运行全部内容:

假设您选择本地端口,可以通过常规8999ssh 访问,并且您的远程 tftp 服务也在默认端口上。tunnelserver2269

ssh -L 8999:<remotehost>:69 <tunneluser>@<tunnelserver>

localhost然后您将通过端口连接到远程 tftp 服务8999

tftp localhost 8999

相关内容