我如何从互联网通过 ssh 进入我家里的电脑?

我如何从互联网通过 ssh 进入我家里的电脑?

是否有软件可以帮助我从公共互联网(例如,咖啡店)通过 ssh 连接到我的家用电脑?

我知道有人问过类似的问题,但似乎没有人真正回答这个问题。让我添加一些细节,以避免通常出现大量关于 DynDns 和端口转发的答案。

  • 我可以访问一个可公开访问的 SSH 服务器。仅从那里进行端口转发并不是一个可持续数天的稳定解决方案。端口转发往往会断开连接、速度变慢等。

  • 我不想设置/支付 DynDns 并在我的路由器上配置 NAT 遍历。

我觉得以下应该是可能的,我只是不知道是否存在已经实现这一点的软件:

就像点对点程序打洞 NAT 遍历一样,应该可以在我的家用机器上运行一个程序,通过打洞打开对相应端口的外部访问。此外,该程序可以在某处(例如在公共服务器上或通过电子邮件)广播家用计算机的公共 IP 和打洞的外部可见端口,并定期更新此信息。

有这样的软件吗?各种 torrent 软件已经实现了部分功能。

答案1

我并不建议在任何情况下将您的设备放入 DMZ,除非您真正了解自己在做什么并且可以正确保护设备及其周围的网络。

有一种软件可以通过互联网模拟局域网,叫做登录Hamachi。通过在主机上安装并启用此功能,您可以通过在互联网上的任何地方登录 VLAN 来访问它。

尽管我不一定看到端口转发的问题。

另一个选项是使用 SSH 的内置端口转发功能。如果在与您尝试连接的主机(主机 2)相同的 LAN 上还有另一个可从互联网访问的 SSH 主机(我们将其称为主机 1),您可以发出一个命令,通过主机 1 从您的计算机(在特定的本地端口上)反弹连接,主机 1 将您的流量路由到其 LAN 中未进行端口转发的主机 2。

该命令如下,将在您尝试用于连接主机 2 的本地计算机上执行

ssh -L [local-port-to-open]:[local-IP-of-Host-2-according-to-Host-1]:[port-to-connect-to-on-Host-2-from-Host-1] [user-of-Host-1]@[Host-1-address]

这将在您的机器上打开一个[local-port-to-open]由 SSH 管理的端口(您的参数),并通过由参数创建的加密隧道将来自该端口的任何流量发送[user-of-Host-1]@[Host-1-address]到 Host-2,如中所述[local-IP-of-Host-2-according-to-Host-1]:[port-to-connect-to-on-Host-2-from-Host-1]。此方法称为本地端口转发(我不太了解远程端口转发)。

例如,假设我想从我当地的咖啡店连接到未进行端口转发的主机 2,使用进行了端口转发的主机 1 将连接反弹到其 LAN。请注意,这将在远程计算机上打开 PTS,但可以忽略它,直到您想要关闭此隧道。然后您可以像平常一样关闭该终端会话。

主机 1 的公网 IP 是201.31.103.212(封装主机 1 和主机 2 的 NAT),1337位于 SSH 端口上。位于 LAN 中的主机 2 的本地 IP 是192.168.254.40,使用22SSH 端口。主机 1 的登录用户名是fish

好的,我只想说我有8080未使用的本地端口,可以暂时用它来进行演示。

我要形成的命令如下:

ssh -L 8080:192.168.254.40:22 [email protected]

现在,打开8080本地计算机上的端口,并根据主机 1(即)发送到192.168.254.40端口(主机 2)22[email protected]

现在,如果你想通过 SSH 进入主机 2,你所要做的就是在端口上指定你的计算机8080。假设主机 2 的登录用户名是turtle

ssh [email protected] -p 8080

SSH 正在管理您的端口8080,它将您的 SSH 请求发送到主机 1,主机 1 将其发送到主机 2。请注意,与使用相反127.0.0.1,您也可以只使用localhost。这只是偏好而已。

SSH 端口转发的另一个用途是代理。

场景:我在学校,带着我的个人笔记本电脑,想访问被屏蔽的 Twitter(实际上在我的高中被屏蔽了,所以我就是这么做的)。我家里有一个端口转发的 SSH 主机,其 IP 位于39.34.81.56端口 上1337。我想通过家里的主机从笔记本电脑上的端口反弹到 Twitter 的连接(Web 服务器通常托管在端口 上808080。我会在笔记本电脑上发出以下命令:

ssh -L 8080:twitter.com:80 [email protected] -p 1337

现在我可以localhost:8080通过网络浏览器访问,它会通过我的加密隧道将 Twitter 从他们的服务器路由到我的家,然后再路由到我学校的笔记本电脑。

我可以使用相同的方法在公共场合登录不使用 SSL 的网站(例如 pastebin),并确保我的凭据是安全的,因为它使用 SSH 加密,并且只从我家无需 SSH 发送,我确保它是安全的。

祝你好运!

编辑:顺便提一下,此处显示的 IP 地址不应是有效地址,但如果是,请不要骚扰这些 IP 的用户。

答案2

是的,所以我认为端口转发就是打洞方法。如果您愿意,您可以将计算机置于 DMZ 中并避免所有混乱。

相关内容