通过ssh连接到同一网络上的多个客户端之一

让我们想象一下我在学校用Android手机。 我家里有一台电脑,那台电脑上有一台虚拟机。 这里是场景,客户端和虚拟客户端都有ssh-client和ssh-server,它们可以在本地网络中相互通信。 当我想通过互联网从Android手机连接我的虚拟客户端时,必须有一个IP地址。 问题是虚拟机和客户端具有相同的公共IP。 那么如何连接两台机器中的一台呢?

您需要在路由器的设置中为本地网络中的每个设备创建端口转发规则。

例如,您可以创建:

  • 规则,其中路由器的端口1110被重定向到本地网络中设备的端口22 (这是标准SSH端口),该端口具有本地IP 192.168.1。 110 ,和
  • 规则,其中路由器的端口1115被重定向到具有本地IP 192.168.1的设备的端口22115

假设您的路由器具有公共IP地址77.60.52.10,因此您将能够使用本地IP地址192.168.1连接到该设备。 110通过此命令:

ssh username@77.60.52.10 -p 1110 

此外,您将能够使用本地IP地址192.168.1连接到设备。 115通过:

 ssh username@77.60.52.10 -p 1115 

在这里,您可以看到TP-LINK家用路由器上的端口转发示例:

在此处输入图像描述

编辑:家用路由器通常有UPnP配置接口。 在Ubuntu中,您可以通过此接口使用UPnP PortMapper等工具创建端口转发(映射)。


为本地网络中的设备设置静态IP地址是个好主意。 其中一种方法是通过路由器设置中的地址预留页面:

地址预订

编辑:静态IP的分配也可以通过操作系统的配置来完成。 以下是如何执行此操作的示例:

  • Ubuntu服务器
  • Ubuntu桌面

进一步阅读:

  • 如何为端口转发创建受限制的SSH用户?
  • 如何在22以外的端口上进行SSH
  • 帮助Ubuntu:网络配置