之前我看过一篇《万物皆可 API》,这个项目就是把一些脚本的执行结果输出到了网页里面。
但是这个还是有很多改进空间,比如说 UI 能好看些,甚至能执行交互命令该多好,最后思来想去,它的究极形态不就是一个 Web 版的 Terminal (终端)吗?
然后本来我还想着对项目进行改造来着,但是想想,最终如果要改造成一个 Web 版的 Terminal,这个肯定已经有开源实现了。
于是我就开始搜,最后搜到几个还不错的。
Web Terminal
经过一番试用,我个人首推的还是 ttyd,其他的几个要么是基于 SSH 的,要么不怎么好用或停止维护了。
下面我就来介绍下 ttyd 的简单用法。
安装
安装其实非常简单,我用的是 Mac,所以用 HomeBrew 直接安装即可:
如果你用的是 Windows、Linux,依然也可以支持,安装可以参考章节。
使用
ttyd 支持不少功能配置,完整命令如下:
可以看到,这里可以使用 -p 来指定运行端口,使用 -c 指定登录密码等等。
基本使用
我们来试下,最基本的命令如下:
这样就使用启动了一个 Web 版的 bash,运行结果如下:
这里显示是在 7681 上运行的,那我们就可以打开,就可以直接运行命令了:
非常丝滑。
看了下背后的传输协议是 WebSOCket,所以稳定性还是有保障的:
当然,我们也可以不用 bash,用自己喜欢的 Shell,比如 zsh,命令如下:
这样的话浏览器里面的 Shell 就是 zsh 啦:
绑定端口
当然我们也可以更换端口,比如 8000,则可以使用如下命令:
这样 ttyd 就可以在 8000 端口运行 HTTP 服务,我们打开就可以执行命令了。
当然这么直接暴露出去似乎也不太安全,我们可以设置 Basic Auth,使用 -c 这个选项即可指定用户名密码,格式为 username:password,例如我们指定用户名和密码都是 admin,那命令就这么写:
这样打开之后就需要输入用户名密码才可以登录了:
自动打开浏览器
我们还可以使用 -B 命令让它自动打开浏览器:
这样运行之后,默认的浏览器就会自动打开,不用我们再去敲网址了,十分方便。
所以,上面这个命令甚至我们还可以做成一个 alias,比如:
这样输入 webcmd 就可以轻松打开一个 Web 版命令行了。
Docker 支持
另外 ttyd 还提供了 Docker 镜像,如果你不想安装的话,可以直接启 Docker,比如这样的话就可以在 7681 上启动:
但这实际上是把容器内部的命令行暴露出来了,如果要暴露宿主机的命令行还需要 mount 下磁盘:
SSH 终端
ttyd 还支持 SSH 终端,命令如下:
这样的话,打开浏览器之后就需要 SSH 登录,输入正确的 SSH 用户名和密码后才能使用。
SSL 支持
如果你想配置 SSL 支持,即支持 HTTPS 的话,可以自己生成证书并添加对应的参数来启动 ttyd,参考链接是:。
更多
上面的用法基本能满足日常需要了,如果想要了解更多用法,可以参考其 Wiki,链接是:。
公网暴露
当然,我们如果想把它公网暴露出来,还可以配合 Ngrok,比如 ttyd 运行在 8000 端口上,我可以使用 Ngrok 将其暴露出来:
运行结果如下:
这样我就可以通过指定的 URL 访问这个终端了,比如这里我就可以使用来访问我的终端了:
非常 Nice!
总结
好了,以上就是 ttyd 的基本使用了,有了它,我们就可以轻松将某台机器上的终端转到 Web 上来执行了,还是非常方便有用的。
原文链接:














发表评论