简易web terminal解决方案

为了方便最快速度打开远程连接,浏览器是个不错的终端载体。在github上看到ttyd项目,麻雀虽小,五脏俱全,符合web terminal的需求,爱了爱了。另外,作者似乎还是MC玩家,折腾过树莓派,简直偶像有木有😘

首先安装必要依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
# 按需安装前置依赖
sudo apt-get install build-essential cmake git libjson-c-dev
# 安装libwebsockets依赖包
sudo apt install libuv1-dev
# 检查libwebsockets版本,需要>2.1
sudo apt-cache show libwebsockets-dev
# 手动安装,从https://github.com/warmcat/libwebsockets/releases下载2.1.1版本
unzip libwebsockets-2.1.1.zip && cd libwebsockets-2.1.1
mkdir build && cd build
cmake .. -DLWS_WITH_LIBUV=ON
make
sudo make install
sudo ldconfig

官方仓库克隆到本地,建议编译安装,默认安装到/usr/local/bin,使用ttyd -h查看帮助文档。因为是明文传输密码,所以不建议Basic Authentication方式做鉴权,要么域名强制https,要么ssl认证方式。ttyd还提供很多使用功能,比如接受链接参数、ssl传输等等。

以非Root身份运行

首先允许普通账户sudo ttyd时无需输入密码。运行sudo visudo,在末尾添加一行(xxx是当前用户名)

1
xxx   ALL=NOPASSWD:/usr/local/bin/ttyd

然后pm2 start -x 'sudo ttyd --max-clients 2 login -p xxx' -n ttyd 即可

以Root身份运行

需要修改/etc/securetty,在末尾增加

1
2
3
pts/0
pts/1
pts/2

然后运行pm2 start -x 'ttyd --max-clients 2 login' -n ttyd

上传下载文件

编译安装lrzsz,使用rz上传文件到服务器,sz下载文件到本地。此外还可以安装axel,取代wget多线程下载。

参考链接

更优于 Shellinabox 的 web shell 工具 – ttyd
Linux下rz/sz安装及使用方法