编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

为何说 2024 最火 Web 终端非 sshx 莫属?

wxchong 2024-07-15 10:16:08 开源技术 9 ℃ 0 评论

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!

1.什么是 sshx

sshx 是基于 Web 的安全协作终端,基于 Rust 、TypeScript、Svelte、JavaScript 等语言编写。下面是来自官方的简单介绍,主打的就是快速以及协作的实时共享。

Fast, collaborative live terminal sharing over the web.

sshx 的典型特征包括:

  • 运行一个命令即可与任何人共享终端
  • 在无限画布上调整大小、移动窗口以及自由缩放和平移
  • 查看其他人的光标实时移动
  • 连接到全球分布式网格(globally distributed mesh)中最近的服务器。链接地址诸如 https://sshx.io/s/eksFxedjoG#Uvaj1EqN0d3lzz
  • 使用 Argon2 和 AES 进行端到端加密
  • 自动重新连接和实时延迟估计
  • 预测回声可实现更快的本地编辑

对于 sshx-server 来说,请求通过 gRPC(对于命令行共享客户端)和 WebSocket 连接(对于 Web 侦听器)传送到服务器,服务器使用混合 Hyper 服务构建,分为 Tonic gRPC 处理程序和 Axum Web 侦听器。

大多数 Web 请求直接路由到位于相对于该二进制文件运行位置的 dist/ 文件夹中的静态文件,从而允许前端与服务器分开开发。下面是 sshx 的运行界面:

注意,上面提到的诸多算法都是为了 Web 浏览器下的终端数据安全性而创建的,开发者可以毫无后顾之忧的在 Web 浏览器上尽情运行终端命令,体验和本地终端并无太大差异(当然这里有点夸张,实际上还是会有一点点延迟)。

  • Argon2:是一种加密算法,可让开发者安全地存储数据,专用于密码加密。 Argon2 是一种现代算法,允许开发者选择要应用的保护,无论是抵抗 GPU 攻击、旁道攻击,还是两者兼而有之。 2015 年 7 月,Argon2 参加并赢得了密码哈希竞赛,是顶级算法。
  • AES:高级加密标准 (AES) 是美国政府选择用于保护机密信息的对称分组密码

目前 sshx 已经在 Github 上通过 MIT 协议开源,有超过 4.2k 的 star,0.1k的fork、是一个值得关注的优质开源项目。

2.如何使用 sshx

通过在终端中运行下面命令来获取 sshx CLI,在 x86_64 和 arm64 架构上支持 Linux 和 MacOS,同时预编译的 Linux 二进制文件是静态链接的。sshx 本身很小,只需几秒钟即可下载 (3 MB)。

curl -sSf https://sshx.io/get | sh
// rust 安装
cargo install sshx
// Cargo是基于 Rust 的打包工具

接着在最喜欢的终端中运行下面命令:

sshx;
// 可以在自己的终端运行该命令

此时终端会输出具体的链接地址,比如:https://sshx.io/s/eksFxedjoG#Uvaj1EqN0d3lzz,直接打开地址即可在浏览器中输入常见的终端操作命令,即使是 adb 等底层命令。

当然,开发者还可以在持续集成工作流程中使用 sshx 来帮助调试棘手的问题,例如: GitHub Actions 。

name: CI
on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      // 其他步骤

      - run: curl -sSf https://sshx.io/get | sh && sshx
      //      ^
      //     └ This will open a remote terminal session and print the URL. It
      //       should take under a second.

没有预先打包的操作,因为只是一个命令,可以在任何地方使用,包括:GitLab CI、CircleCI、Buildkite、Raspberry Pi 上的 CI 等等。

Buildkite: 是一个安全且可扩展的持续集成和交付 (CI/CD) 平台,支持 1000 多个客户,并让工程师在自己的基础设施上运行快速、安全且可扩展的管道。

树莓派(Raspberry Pi):是一款以教育为目的而设计的单板计算机,由英国的树莓派基金会开发

但是开发者请务必小心,如果将其添加到公共 GitHub 存储库则任何用户都可以在 CI 作业运行时查看该作业的日志。

3.自己构建sshx

要从源代码构建最新版本的客户端,可以克隆从地址 https://github.com/ekzhang/sshx 克隆项目并运行,同时安装 Rust:

cargo install --path crates/sshx
//  需要安装 rust 

此时编译后的 sshx 二进制文件将放置在 ~/.cargo/bin 文件夹中,可以自行安装运行。如果是在docker环境中,可以运行下面的命令:

docker compose up -d

接着安装 Rust 1.70+、Node v18、NPM v9 和 mprocs,然后运行下面命令:

npm install
mprocs

此时将在计算机上并行编译并启动服务器、客户端实例和 Web 前端。

4.本文总结

本文主要和大家介绍一个基于 Web 的安全协作终端 sshx ,主打的就是快速以及协作的实时共享。因为篇幅有限,关于 sshx 的更多高级功能只是做了一个简短的介绍,但是文末的参考资料提供了大量优秀文档以供学习,如果有兴趣可以自行阅读。如果大家有什么好的在线终端解决方案,欢迎在评论区留言。

参考资料

https://github.com/ekzhang/sshx

https://sshx.io/

https://www.youtube.com/watch?v=-BByXtL6dNo

https://www.boldare.com/blog/how-to-improve-user-password-security-with-argon2/

https://lib.rs/crates/sshx-server

https://www.amitmerchant.com/web-based-and-collaborative-terminal-sharing-with-sshx/

https://zhuanlan.zhihu.com/p/666251677

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表