从客户端通过服务器SSH到嵌入式linux

从客户端通过服务器SSH到嵌入式linux

我希望能够从任何地方直接连接到没有公共 IP 地址的嵌入式 Linux(称为 C)。

C 可以建立到服务器的连接(使用 SSH -R),如果我通过 SSH 进入服务器,我就可以通过 SSH 进入嵌入式 Linux。

但是,我希望能够从客户端通过 SSH 连接到 C,而不必先通过 SSH 连接到服务器。 (我无法使用 SSH -R 从 C 到客户端建立连接)

这可能吗?如果可以,怎么做?

答案1

您可以相当轻松地做到这一点。一种方法是使用 SSH 的远程端口转发,C 通过这种方式告诉服务器将端口转发回它,如下所示:

ssh -R 2222:localhost:22 server

当从 C 运行此命令时,将告诉服务器获取到端口 2222 的任何连接并将它们转发到端口 22 上的 C。

同样,您可以通过防火墙规则在服务器上设置端口转发。

答案2

如果您希望能够连接到转发的端口,您需要四件事:

  • 将服务器公共 IP/主机名指定为 的第一个参数-R,否则它将仅侦听localhost,这显然无法从服务器外部访问。
  • 配置服务器GatewayPorts,这将允许从外部访问转发的端口
  • 使用-g开关基本上允许客户端进行相同的操作
  • 2222在服务器防火墙中打开端口。

该命令可能如下所示:

ssh -g -R server:2222:localhost:22 server

相关内容