如何配置才能始终通过动态 IP 通过 Internet SSH 连接到我的系统?

如何配置才能始终通过动态 IP 通过 Internet SSH 连接到我的系统?

基本上我希望能够做类似 teamviewer 的事情,无论网络配置是什么,只要我的 ssh 服务器(机器 A)和 ssh 客户端(机器 B)都可以访问互联网(以及一些第三台服务器,机器 C) ),我可以获得访问权限 - 原因是我希望能够移动机器 A,将其插入电源,让它自动连接到多个预配置的 wifi 网络之一(每个网络都是唯一的/不同的) ,无需在网络上配置端口转发或类似功能,并且能够从机器 B 通过互联网登录

我怎样才能做到这一点?我不介意在具有静态 IP 地址的服务器上设置一些东西来帮助握手,但如果某些东西已经存在,我也不介意使用第三方服务器(就像 teamviewer 那样)

为了清楚起见进行编辑:我有 3 台机器,AB 和 C

A 是一个无头树莓派,将在随机位置打开/关闭电源,连接到预先配置的 WiFi 网络

B 是我想要连接的具有适当显示器、键盘等的机器

C 是我租用的 AWS 服务器,它具有静态 IP 地址,可以可靠地从 B 进行 SSH 连接,并且可以安装帮助 B 连接到 A 所需的任何内容

答案1

由于您在互联网上有机器 C,因此在那里创建一个名为 的特殊帐户sesame,并在 A 上创建一个带有公钥/私钥的帐户,您已将公钥复制到sesameC 上的帐户。

您现在可以从 A 登录到 C,但您可以执行以下操作:

ssh -N -R 19930:localhost:22 sesame@yourserverC

(您可能希望将其与睡眠语句结合起来,例如 10 秒,并将其包装在无限循环中,以便在 WiFi 关闭导致连接中断时重新建立连接)

从机器 B 上,通常登录到您在 C 上拥有的任何帐户(可以是但不一定是该sesame帐户,我使用不同的帐户)。进入 C 后,使用以下命令登录 A:

ssh localhost -p 19930

您当然可以使用 19930 之外的其他号码。

如果 A 上的私钥不受密码保护,则可以运行ssh -N -R ...from 。/etc/rc.local在这种情况下,请确保创建sesame一个功能有限的单独帐户,这样当您的计算机 A 被破坏/被盗时,您的服务器 C 的风险就会受到限制。这也是为什么我建议使用单独的帐户从 B 到 C。

sesame其实你可以将in的登录 shell 设置为/etc/passwdto /bin/false,这样你就不能再使用该账户进行登录了。

答案2

安装 IPv6 隧道(例如六克斯)在你的树莓派上。现在,您将拥有一个永久静态 IPv6 地址,只要您的 Pi 在线,该地址就会在线。确保保护您的 Pi,因为它现在已连接到世界。

如果您的 B 连接到 IPv6 网络,则直接连接到 Pi。如果 B 未连接到 IPv6 网络,请使用 C 作为跳转服务器,通过 IPv4 连接到 C,然后通过 IPv6 从 C ssh 到您的 Pi。

答案3

另请看一下这个:

使用的技术与已接受的答案中描述的技术相同,但它使用一些脚本来自动化操作并使解决方案更加通用。它还在 Docker 容器内进行整个配置,以便主系统在出现问题时是安全的。

但它不提供从 A 到 C 的自动连接,必须手动启动。也许您可以对解决方案进行一些定制,以便它完全满足您的要求。

答案4

我认为你应该看看反向 ssh 端口转发。简而言之,您首先使用以下语法启动从 A 到 C 的 ssh,然后使用该端口从 C 隧道返回到 A。这样做时,您不会碰到 A 的家庭防火墙,因为 R-Pi 已经有一条隧道。

ssh -R 2210:localhost:22 myCoolAwsSite.com

这样做时请考虑安全后果。您可以添加一些 cron jujitsu,以便在重新启动后重新建立连接。

相关内容