通过 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 客户端,如 PuTTYTermius,甚至是 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 License本作品采用 Creative Commons Attribution-Share Alike 4.0 International License 授权。
© . All rights reserved.