天天看点

更优于 Shellinabox 的 web shell 工具 -- ttyd

ttyd 是一个运行在服务端,客户端通过web浏览器访问从而连接后台 tty (pts伪终端)接口的程序,把 shell 终端搬到 web 浏览器中。

更优于 Shellinabox 的 web shell 工具 -- ttyd

websocket 是 html5 开始提供的一种基于http协议与服务器webserver进行单会话、长连接、全双工的网络技术,依靠这种技术可以实现客户端和服务端的长连接,双向实时通信,以及基于服务端主动向客户端的实时消息推送交互的底层技术栈。

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息, 是真正的双向平等对话,属于服务器推送技术的一种。

其他特点包括:

建立在 tcp 协议之上,服务器端的实现比较容易。

与 http 协议有着良好的兼容性。默认端口也是 80 和 443,并且握手阶段采用 http 协议,因此握手时不容易屏蔽,能通过各种 http 代理服务器。

数据格式比较轻量,性能开销小,通信高效。

可以发送文本,也可以发送二进制数据。

没有同源限制,客户端可以与任意服务器通信。

ttyd 不同于 shellinabox 项目的底层原理,它使用基于html5的 <code>websocket</code> 协议,更少的http交互带来更高效、更高性能、更低延时的交互式会话服务。

ttyd 也可以通过 <code>nginx</code> 7层http代理访问,更高的灵活性。

ttyd 内建支持 <code>ssl/tls</code> 传输层认证加密,支持客户端/服务端的单向/双向证书认证加密,更高的安全性。

方式一:下载二进制程序文件,本地直接运行即可(推荐)

方式二:下载源码文件,安装依赖库编译安装

如果安装<code>libwebsockets-dev</code>(版本过时)失败,你可能需要单独编译安装<code>libwebsockets</code>。

####程序帮助信息:

运行系统账户登录认证

注意:如需<code>root</code>身份登录终端,需要在属主属组为 root 的 <code>/etc/securetty</code>文件中增加可登录的终端类型<code>pts/0 pts/1 pts/2</code>,当然也需要运行 <code>ttyd</code> 程序的用户有可读 <code>/etc/securetty</code> 文件的权限(当然也就是以 root 身份启动 <code>ttyd</code> 服务)。 所以,为安全性考虑,不建议以 root 身份启动 <code>ttyd</code> 服务,也就不建议直接以 root 账户登录 ttyd websockets页面伪终端。

运行特定的后台交互式服务

通过 zmodem 上传下载文件,服务端需安装 <code>lrzsz</code>

更优于 Shellinabox 的 web shell 工具 -- ttyd
更优于 Shellinabox 的 web shell 工具 -- ttyd
本例使用本地自签证书示例

服务端单向认证

更优于 Shellinabox 的 web shell 工具 -- ttyd

客户端/服务端双向认证,需增加<code>--ssl-ca</code>选项,桌面浏览器另外需要单独安装 <code>client.p12</code>证书到本地

更优于 Shellinabox 的 web shell 工具 -- ttyd
更优于 Shellinabox 的 web shell 工具 -- ttyd

在 curl 中测试证书验证

如需把服务挂靠在 nginx 后端,请配置增加如下 ws 参数:

继续阅读