使用 HTTP 上的 SSH 绕过 Linux 防火墙

远程工作已成为常态;使用这个有用的开源解决方案,从任何地方快速连接和访问您的所有设备。
157 位读者喜欢这个。

随着连接性和远程工作的增长,访问远程计算资源变得越来越重要。但是,为设备和硬件提供外部访问的要求使这项任务变得复杂且有风险。为了减少这种摩擦,ShellHub 是一个云服务器,允许从任何外部网络通用访问这些设备。

ShellHub 是一个开源解决方案,根据 Apache 2.0 许可证获得许可,它涵盖所有这些需求,并允许用户通过一个帐户连接和管理多个设备。它的开发旨在方便开发人员和程序员的任务,使远程访问 Linux 设备成为任何硬件架构的可能。

仔细观察,ShellHub 解决方案使用 HTTP 传输层来封装 SSH 协议。这种传输层选择允许在大多数网络上无缝使用,因为它通常可用且被大多数公司的防火墙规则和策略接受。

这些示例使用 ShellHub 版本 0.3.2,于 2020 年 6 月 10 日发布。

使用 ShellHub

要访问该平台,只需访问 shellhub.io 并注册以创建一个帐户。您的注册数据将帮助开发团队了解用户配置文件,并为如何改进平台提供更多见解。

ShellHub registration form

图 1:shellhub.io 中提供的注册表单

ShellHub 的设计具有直观且简洁的界面,可以以最快的方式提供所有信息和功能。注册后,您将进入仪表板,准备注册您的第一个设备。

添加设备

要启用通过 ShellHub 连接设备,您需要生成一个标识符,该标识符将在设备连接到服务器时用于验证您的设备。

此标识必须在代理(ShellHub 客户端)内部配置,该代理将与映像一起保存在设备中,或者必须作为 Docker 容器添加。

默认情况下,ShellHub 使用 Docker 运行代理,这非常方便,因为它在现有系统上提供了无摩擦的设备添加,Docker 支持是唯一的要求。要添加设备,您需要粘贴命令行,该命令行显示在 ShellHub Cloud 对话框中(见图 2)。

图 2:将设备添加到 ShellHub Cloud

默认情况下,设备使用其 MAC 地址作为其主机名。在内部,设备由其密钥标识,该密钥在设备注册期间生成,以向服务器验证身份。

访问设备

要访问您的设备,只需转到仪表板中的“查看所有设备”,或单击左侧菜单上的“设备”;这些将列出您所有已注册的设备。

设备状态可以在页面上轻松查看。在线设备旁边会显示一个绿色图标,可以通过单击终端图标进行连接。然后您输入凭据,最后单击“连接”按钮,请参阅(图 3)。

图 3:使用 Web 上的终端访问设备

访问设备的另一种方法是从任何 SSH 客户端(如 PuTTY、Termius,甚至 Linux 终端)访问。我们可以使用 ShellHub 标识(称为 SSHID)作为连接的目标地址(例如,ssh username@SSHID)。图 4 说明了我们如何使用终端上的 Linux SSH 客户端连接到我们的机器。

图 4:使用 Linux 终端连接到设备

无论何时您登录 ShellHub Cloud 平台,您都可以在仪表板上访问所有已注册的设备,以便您可以随时随地访问它们。ShellHub 通过开源平台以透明的方式简化了与远程机器保持通信安全的过程。

加入 GitHub 上的 ShellHub 社区,或随时通过 Gitter 或发送电子邮件至 contato@ossystems.com.br 将您的建议或反馈发送给开发团队。我们很高兴收到社区成员的贡献!

下一步阅读什么

7 条评论

这是一篇很棒的文章。我一直觉得关于防火墙的文章很有趣,您的观点也很棒 :)

我还建议将 corkscrew 作为 .ssh/config 中的配置代理
只需要在目标服务器上的 443 端口上运行 ssh。
从那里你可以将目标用作跳板主机。
这样您就可以使用原生 ssh。

绝对精彩......谢谢您的分享。

这在某些情况下会有效。但是,我们大多数人面临的一个挑战是,我们私有网络的暴露 IP 地址会定期更改。这个解决方案解决了这个问题。并不是说它是万能药,但它总归有点用。

我想可以考虑在某个地方租用一台 Linux 服务器并在其上运行 shellinabox。如果我能找到空闲时间,这可能会成为一个不错的项目。 ;)

回复 ,作者:Nico (未验证)

我刚刚快速看了一下“入门”文档。安装 ShellHub 的第一步是如何“...在您的本地计算机或 AWS、Azure、Google Cloud 或 Digital Ocean 等 IaaS 提供商上安装和运行 ShellHub 的自托管实例。” 所以如果你愿意,你可以这样做。

回复 ,作者:sgtrock

一个非常好的解释。

Creative Commons 许可本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.