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

ttyd 1.3.0 发布 - 终端分享工具

  •  
  •   tsl0922 ·
    tsl0922 · 2017-02-20 19:40:36 +08:00 · 7708 次点击
    这是一个创建于 2614 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ttyd 1.3.0 发布了。这个版本添加了一些新的功能还有一些 bug 修复,升级了网页终端模拟器,前端终端模拟器性能有了很大的提升。

    该版本主要更新内容如下:

    • --index 选项: 自定义 index.html 文件路径
    • --browser 选项: 启动 ttyd 后在系统默认浏览器里打开终端
    • --signal-list 选项: 列出支持的停止进程信号
    • 缩小了 docker 镜像的占用的磁盘空间
    • 支持监听 UNIX 套接字
    • 改进了客户端的 base64 解码和 utf8 支持
    • 修复了启动命令没有在认证后执行的问题
    • 关闭浏览器窗口时给出提示
    • 更新到 xterm.js 2.3.1,大幅提升性能

    小提示:如果你没有使用 oh-my-zsh 作为 shell ,还可以在启动 ttyd 的时候添加 -t useFlowControl=true 参数开启 xterm.js 的 流量控制功能,这样可以减轻程序有大量输出时前端的卡顿,此功能和 oh-my-zsh 的快捷键冲突,所以默认没有开启。


    在这中间还有个 1.2.1 版本更新没有在这里发布,这个版本添加了 SSL 客户端认证支持(应 /t/320488 用户要求)。

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

    项目主页:https://tsl0922.github.io/ttyd

    screenshot

    更新历史:

    20 条回复    2017-02-22 23:58:52 +08:00
    abmin521
        1
    abmin521  
       2017-02-20 22:40:24 +08:00
    非常好用 感谢
    ik
        2
    ik  
       2017-02-20 23:34:35 +08:00 via iPhone
    收藏
    imxieke
        3
    imxieke  
       2017-02-21 00:42:19 +08:00 via Android
    😎 居然不使用 Coding Pages 不清真啊
    zhs227
        4
    zhs227  
       2017-02-21 01:03:49 +08:00
    一直在用着,共享只读控制台给别人看。非常方便。
    提两个建议供参考:
    1. 登进去以后字母顶着浏览器最左边,看上去太挤,最好能留几个像素的空白出来。
    2. 能否支持 HTOP ,类型 google Authenticator 那种二次鉴权。有时候需要在网上共享帐号觉得不是很安全,又懒得上 SSL 。
    wwqgtxx
        5
    wwqgtxx  
       2017-02-21 08:01:25 +08:00
    试了一下,发现 ttyd 对 htop 这种应用兼容性很不友好呀,严重的内容错位变形呀
    tsl0922
        6
    tsl0922  
    OP
       2017-02-21 08:17:19 +08:00 via iPhone
    @wwqgtxx 前端的终端模拟器对部分特殊 unicode 字符的支持还不是很完美,这个暂时只能等上游 xterm.js 修复了。
    wwqgtxx
        7
    wwqgtxx  
       2017-02-21 08:19:02 +08:00
    @tsl0922 个人感觉有点像 xterm.js 莫名其妙的放大了空格符导致的错位,看着好别扭
    tsl0922
        8
    tsl0922  
    OP
       2017-02-21 09:08:19 +08:00
    @wwqgtxx 应该是空格导致的,我所说的 unicode 字符问题是指类似这个 issue 里的: https://github.com/sourcelair/xterm.js/issues/467 ,你这里也不排除可能和字体有关系,如果有空的话可以去 https://github.com/tsl0922/ttyd/issues 发 issue 附上截图、系统环境和浏览器环境我看看。
    tsl0922
        9
    tsl0922  
    OP
       2017-02-21 09:08:50 +08:00
    应该是空格导致的 > 应该不是空格导致的
    tsl0922
        10
    tsl0922  
    OP
       2017-02-21 09:34:51 +08:00
    imxieke
        11
    imxieke  
       2017-02-21 10:25:30 +08:00
    @tsl0922 #10 我这边出了点小问题
    使用 ttyd -p 5000 bash -x login
    但会提示:`/bin/login: /bin/login: cannot execute binary file`
    但是不使用验证或者 `--credential username:passwd` 是没问题的

    我在本地通过 login 切换没毛病:

    ```
    login imxieke (刚刚创建的用户)
    Password:
    Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-57-generic x86_64)

    * Documentation: https://help.ubuntu.com/

    26 packages can be updated.
    18 updates are security updates.

    Your Hardware Enablement Stack (HWE) is supported until April 2019.
    *** System restart required ***

    The programs included with the Ubuntu system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
    applicable law.


    The programs included with the Ubuntu system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
    applicable law.

    No directory, logging in with HOME=/

    ```

    环境为 Daocloud 提供的 Ubuntu 14.04.5 LTS
    sorcerer
        12
    sorcerer  
       2017-02-21 10:29:54 +08:00 via iPhone
    这个不错啊,可以不用开终端了
    83f420984
        13
    83f420984  
       2017-02-21 10:31:34 +08:00 via Android
    能不能直接编译好几个平台的文件?比如 ar71x 、 x86 的,之前想在 ar71x 上编译 15.05 的包,始终报错
    tsl0922
        14
    tsl0922  
    OP
       2017-02-21 11:22:12 +08:00
    @83f420984 把报错信息贴到 github issues 里我看看? ttyd 已经在官方 openwrt 源里了,直接使用最新的 packages feed 就可以编译。
    tsl0922
        15
    tsl0922  
    OP
       2017-02-21 11:25:09 +08:00
    @imxieke 我在 mac 下直接执行 bash -x login 也报和你一样的错误。为什么不直接 执行 login 呢?这样: ttyd -p 5000 login
    imxieke
        16
    imxieke  
       2017-02-21 11:29:48 +08:00
    我开始不是太明白咋用的 把 bash 和 login 一起使用了 以为不使用 bash 便不会进入 命令界面
    刚刚突然想到 login 之后会自动进入 命令界面
    tsl0922
        17
    tsl0922  
    OP
       2017-02-21 16:33:51 +08:00
    @zhs227 不知道你想要的效果是什么样的? Google Authenticator 那种是 TOTP 算法,这里做两步认证好像没什么太大的意义,但可以考虑做基于 TOTP 的动态密码,每个密码有一定时间的有效期( ttyd 没有 session )。
    zhs227
        18
    zhs227  
       2017-02-22 02:05:04 +08:00
    @tsl0922 我说错了,应该是 TOTP 。用一个指定的 secretKey 生成一个 otpauth://totp/Example:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Example 的二维码,导入 Google Authenticator 或者是 Authy ,在登录页面认证动态密码。有动态密码可以考虑不用基本认证密码,增强 root 的安全性。要不有很多服务器要记好多密码
    只是个建议,也许不是很有用,个人遇到的情况是服务器较多的时候 TOTP 动态密码比每个服务器使用相同密码要安全
    fhefh
        19
    fhefh  
       2017-02-22 19:26:30 +08:00
    nice mark
    tsl0922
        20
    tsl0922  
    OP
       2017-02-22 23:58:52 +08:00
    @zhs227 动态密码在个场景下感觉没那么大的需求,目前不打算做。另外,已经给页面添加 padding ,看起来应该会好些了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5529 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:24 · PVG 11:24 · LAX 20:24 · JFK 23:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.