V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
tsl0922
V2EX  ›  分享创造

终端分享工具 ttyd 发布首个正式版本 1.0.0

  •  2
     
  •   tsl0922 ·
    tsl0922 · 2016-09-26 21:02:19 +08:00 · 5915 次点击
    这是一个创建于 3005 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上个帖子: 造了一个新的轮子 ttyd -- 分享任意命令行程序到网页上

    ttyd 1.0.0 发布。这是 ttyd 的首个正式版本,主要完善了一些基本功能的实现。

    ttyd 首次发出后也受到了不少网友的关注和支持,不到两个星期时间 github 上 Star 数已经 100+,如果你觉得这个程序很有用,欢迎到 github 上 Star 下补刀支持!

    项目地址:

    https://github.com/tsl0922/ttyd

    github 上 C 语言还是不够流行,个位数的 Star 数都可以上 https://github.com/trending/c

    安装方法:

    macOS 用户可以通过 brew install tsl0922/ttyd/ttyd 来快速安装体验,已经在准备提交到官方 homebrew 仓库,但是 github 上项目创建时间还不到 1 个月,可能不会那么容易被接受。

    Linux 、 OpenWrt 下目前需要手工编译安装,具体步骤请查看项目的 README


    ttyd 是一个 C 语言编写的命令行程序,可以把任意命令行程序分享到网页上操作,可以看做是个网页版的远程终端,支持 Linux 、 macOS 系统,还可以运行在 OpenWrt 之类的嵌入式系统上。

    功能特色:

    • C 语言编写,在速度和内存占用上相比其它实现有一些优势
    • 网页和服务器端使用 websocket 通信(基于 libwebsockets
    • 前端使用 chromium hterm 实现终端模拟,功能完备
    • 客户端和服务器端支持 SSL 加密通信(基于 OpenSSL
    • 支持配置用户名密码认证( Basic Auth )
    • 可以执行任意命令行程序,不只是 bash 之类的 shell
    • 跨平台支持,可以在 Linux 、 macOS 、OpenWrt 下运行

    运行效果:

    screenshot

    第 1 条附言  ·  2016-09-28 01:11:39 +08:00

    正在提交到 OpenWrt 官方软件源:https://github.com/openwrt/packages/pull/3244

    路由器上运行效果: openwrt

    第 2 条附言  ·  2016-09-28 07:47:15 +08:00
    正在提交到官方 homebrew 仓库: https://github.com/Homebrew/homebrew-core/pull/5310
    第 3 条附言  ·  2016-10-13 21:35:48 +08:00

    homebrew 那边的 PR 已合并,现在可以直接 brew install ttyd 安装了 🎉

    15 条回复    2017-02-23 10:53:00 +08:00
    mritd
        1
    mritd  
       2016-09-26 21:09:48 +08:00 via iPhone
    666666
    bobchengbin
        2
    bobchengbin  
       2016-09-26 21:56:12 +08:00
    6666666
    4ever911
        3
    4ever911  
       2016-09-26 22:37:38 +08:00 via iPhone
    类似 web 版本 ssh 吗
    Tink
        4
    Tink  
       2016-09-26 22:54:08 +08:00
    如果只能通过密钥对登陆服务器的话,这个也可以用吗?
    l0wkey
        5
    l0wkey  
       2016-09-26 23:04:55 +08:00   ❤️ 1
    真· web · shell
    tsl0922
        6
    tsl0922  
    OP
       2016-09-26 23:21:57 +08:00
    @Tink 如果直接运行在要登陆的服务器上,那网页上就不需要 ssh 的登陆了,因为已经可以直接进入 shell ,网页上再配置个 basic auth 认证就行了。还可以找个跳板机,在跳板机上放好登陆用的私钥并运行 ttyd ,比如: ttyd ssh -i ~/.ssh/id_rsa user@host ,这样打开网页就会直接从跳板机 ssh 过去并通过私钥登陆了。
    Tink
        7
    Tink  
       2016-09-26 23:34:32 +08:00 via iPhone
    @tsl0922 噢,也就是说要是直接跑在服务器上那几乎不用任何配置,这个挺方便
    tsl0922
        8
    tsl0922  
    OP
       2016-09-26 23:38:03 +08:00
    @Tink 如果直接跑在服务器上还可以执行 ttyd login ,这样就可以用服务器上的账户登录。
    kaneg
        9
    kaneg  
       2016-09-27 00:22:09 +08:00 via iPhone
    有个 go 语言写的 gotty 貌似也是类似的功能,抽空比较下功能差异
    tsl0922
        10
    tsl0922  
    OP
       2016-09-27 07:11:15 +08:00 via iPhone
    @kaneg ttyd 基本上是 gotty 到 C 语言的移植,功能几乎差不多。
    fuxpro
        11
    fuxpro  
       2016-09-27 09:04:20 +08:00
    @tsl0922 我很佩服, 不知道使用起来的流畅度如何?
    tsl0922
        12
    tsl0922  
    OP
       2016-09-27 12:59:08 +08:00 via iPhone
    @fuxpro websocket 通信,只要网络条件不是很差,基本无延迟,你可以试试
    artandlol
        13
    artandlol  
       2017-02-22 18:09:13 +08:00
    @tsl0922 centos 安装好多包都不支持
    No package libwebsockets-dev available.
    No package libjson-c-dev available.
    No package libssl-dev available.
    。。。
    tsl0922
        14
    tsl0922  
    OP
       2017-02-22 19:13:35 +08:00
    @artandlol 你安装的是 Ubuntu 下的包啊, centos 下包名可能不一样,也可能需要自己编译依赖。
    artandlol
        15
    artandlol  
       2017-02-23 10:53:00 +08:00
    @tsl0922
    已经装上了
    包名不一样 包 libssl-dev 的是 openssl-dev
    libwebsockets-dev 自己编译了
    只不过国内网络问题导致一直下载不完整 https://warmcat.com/git/libwebsockets/snapshot/libwebsockets-2.1.1.tar.gz
    谢谢 coding~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3124 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:10 · PVG 21:10 · LAX 05:10 · JFK 08:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.