天天看點

更優于 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 參數:

繼續閱讀