通过 busybox 路由器的 SSH 隧道

通过 busybox 路由器的 SSH 隧道

我有一个 busybox 路由器,我可以使用 telnet 登录控制台,并且还可以访问 Web 界面。

我的问题是,如何通过路由器从本地网络创建 ssh 隧道,以便我能够远程访问我的计算机?我正在寻找基于命令行的解决方案,而且我也意识到路由器的内存较低且实用程序集非常有限。虽然它是一个最小的 Linux 系统,只有一小部分工具,但它们确实有像路由、iptables 等实用程序,所以我认为这是可能的。

另外,我对busybox系统的了解还很低,所以如果我有错误的地方,请随时纠正我。

答案1

我画了一些草图

键入 ssh 隧道命令的机器称为»你的主人«

从本地开始的 ssh 隧道


从远程开始的 ssh 隧道

介绍

  1. 当地的:-L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHost表示:使用 ssh 连接到connectToHost,并将所有连接尝试转发到当地的 sourcePortonPort到名为 的计算机上的端口forwardToHost,可以从该connectToHost计算机访问该端口。

  2. 偏僻的:-R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHost表示:使用 ssh 连接到connectToHost,并将所有连接尝试转发到偏僻的 sourcePortonPort到名为 的计算机上的端口forwardToHost,可以从本地计算机访问该计算机。

你的例子

家用电脑运行linux

这是我的草图的第三张图片。你家里的电脑运行linux吗?你在互联网上有一个远程主机,上面有 ssh,你可以简单地从你的家庭计算机上使用它访问它

ssh remotehost

那么您肯定已经安装了 ssh,甚至不需要路由器来创建隧道。在您的计算机上使用以下命令(名为的蓝色框yourhost代表您的家庭计算机):

ssh -R 11111:localhost:22 remotehost

现在,如果您坐在远程主机上并想通过 ssh 连接到您的家庭计算机,请使用此命令

ssh -p 11111 homeuser@localhost

11111这将启动到远程主机上绿色端口的 ssh 连接,该连接通过 ssh 隧道(甚至通过您的 busybox 路由器)转发,并连接到22您家用计算机的本地主机(即您的家用计算机本身)的粉红色端口。

当然busybox也可以建立隧道

这是我的草图中的第四张图片。您现在正坐在(或登录)busybox。yourhostbusybox路由器也是如此。

ssh -R 11111:nearhost:22 remotehost

现在,当您位于远程主机时,再次输入

ssh -p 11111 busyboxuser@localhost

连接到绿色端口11111,然后通过隧道转发到 busybox,并从那里连接到22近主机(代表您的家庭计算机)的粉红色端口。

答案2

ssh -L这就是您正在寻找的。

让我们画一张共有 4 个主机的图,A、B、X、Y。

  • A 是拥有常规客户端(例如网络浏览器)的计算机
  • B 是距离您最近的支持 SSH 的本地计算机,它可能与 A 相同。
  • X 是支持 SSH 的远程计算机
  • Y 是托管您希望从 A 访问的服务(例如 Web 服务器)的计算机。Y 可以与 X 是同一主机。

在 B 上:

ssh -Nn -L 8080:Y:80 username@X

这建立了一条隧道:

B:8080 <--- encrypted over ssh ---> X < ---- unencrypted ----> Y:80

然后A可以连接到B:8080并看到Y:80:

A <--- unencrypted ---> B:8080 <--- encrypted over ssh ---> X < ---- unencrypted ----> Y:80

如果 A 与 X 是同一台机器,B 与 Y 是同一台机器,则未加密的路径实际上永远不会经过真实的网络;您的网络浏览器连接到 localhost:8080(隧道启动); X 上的 ssh 服务器连接到 localhost:80。

相关内容