如何通过 ssh 进入路由器后面的家庭网络上运行的服务器?

如何通过 ssh 进入路由器后面的家庭网络上运行的服务器?

好的,我家里的网络中有一个 PC,在安装了 openssh 服务器的 VM 上运行 Ubuntu。

  1. 如何使用互联网从家庭网络之外的另一台计算机远程访问它?
  2. 我使用什么 IP 地址来连接它?
  3. 我需要做什么样的端口转发?

答案1

您需要做多件事:

1) 就像 fkraiem 在他的评论中提到的那样,确保您的虚拟机在本地网络上可访问。在虚拟机设置中使用“桥接”网络连接应该可以实现这一点。然后使用您的其他计算机之一(甚至是您的主机),检查您是否可以登录 SSH 服务器。如果可以,恭喜,让我们进入下一步。

2) 接下来,您需要知道如何在路由器上进行端口转发。由于您没有提到您使用的是哪种路由器,因此您必须自己弄清楚。端口 22 是 SSH 使用的端口。当然,您可以在路由器上监听更高的端口,以避免您的日志被一群试图入侵您服务器的脚本小子填满,然后将端口转发到服务器上的 22。例如,假设您的服务器的本地 IP 是 192.168.0.10。您的 WAN(Internet)IP 是 99.99.99.99。

99.99.99.99:60022 -> 路由器 -> 192.168.0.10:22

您要做的是告诉您的路由器监听端口 60022,并将其转发到 IP 192.168.0.10 和端口 22。

要确定您的 WAN IP 是什么,只需谷歌搜索“我的 IP 地址是什么”。还有其他方法,但这是最简单的。

现在,设置好路由器后,尝试使用更高端口将外部计算机连接到您的 WAN IP。您可以将手机绑定到笔记本电脑来实现这一点。

如果您能理解这一点,那么再次祝贺您。

3) 现在您必须确保您的 IP 地址在本地网络上保持静态,并且您需要为您的 WAN IP 地址获取动态 DNS 条目。这样,您将使用域名而不是 WAN IP。谷歌搜索“动态 DNS”以查找一些免费服务。

希望有所帮助。

答案2

我的个人设置如下:

  1. 在路由器上,将远程计算机的端口 22 转发到本地计算机的端口 2222,例如 192.168.0.33。这样,您仍然可以通过 ssh 访问计算机上的主操作系统,而 2222 则用于虚拟操作系统。

    在此处输入图片描述

    1. ifconfig在虚拟机上,将主机操作系统 192.168.0.33 端口 2222 转发到客户操作系统的端口 22。可以使用客户机本身上的命令找到客户的 IP 。

    在此处输入图片描述

现在,如果您知道路由器的 IP,您可以通过 ssh 连接到路由器的 IP,它将自动转发到物理机的端口 2222。物理机将把该连接提供给虚拟机的端口 22(前提是 VM 正在运行)。

如果你想从本地网络进行 ssh,请使用ssh -p 222 192.168.0.33

答案3

ngrok (https://ngrok.com/) 对我来说效果很好。安装后,它很简单:

./ngrok tcp 22

它将启动一个 ngrok 会话并显示一个 tcp 地址和一个端口,然后您可以通过 ssh 访问:

ssh username@address -p port

由于这是反向隧道,因此不需要任何端口转发或路由器配置更改。但是,免费版本不提供静态地址/IP。

相关内容