基於 Web 的遠程 Terminal 模擬器安裝使用詳解

http://lzw.me/a/shellinabox.html

1、Shellinabox 簡介

Shellinabox 是一個基於 web 的終端模擬器,採用 C 語言編寫,使用 Ajax 與後端服務通訊。它實現了一個 Webserver,默認監聽 4200 端口,在支持 Javascript 和 CSS 的瀏覽器上訪問 http://host:4200 便可。而且能夠配置 SSL/TLS 證書,使用 https 方式加密通訊。css

2、Shellinabox 安裝

2.1 編譯安裝

wget http://shellinabox.googlecode.com/files/shellinabox-2.14.tar.gz
tar zxvf shellinabox-2.14.tar.gz
cd shellinabox-2.14
./configure
make && make installhtml

2.2 安裝包安裝

在 ubuntu 中你也能夠經過下載 deb 軟件包進行安裝。下載地址以下:node

http://packages.ubuntu.com/raring/web/shellinaboxnginx

3、Shellinabox 啓動與配置使用

3.1 生成 pem 證書

生成 pem 證書,能夠 https 方式啓動。pem 證書的格式爲公鑰加私鑰,並以 x509 的格式進行打包。git

openssl req -new -x509 -nodes -out server.crt -keyout server.key
cat server.crt server.key > /tmp/certificate.pemgithub

SSL 證書不是必需要手動生成的。若是沒有生成 SSL 證書,或者啓動時沒有指定它或沒法找到,而且沒有使用 -t 參數禁用 SSL,則守護進程會嘗試自動生成一個 SSL 證書。web

3.2 啓動

安裝完後可經過如下命令來啓動shell

shellinaboxd -b -c /tmpubuntu

查看是否啓動:後端

netstat -ntpl |grep 4200
ps -ef |grep shellinabox

shellinabox_2

服務默認是 4200 端口,可如此進行訪問: https://yourhostip:4200。

3.3 相關啓動參數

-b | –background[=pidfile]

指定其後臺運行。若是指定了文件路徑參數,則會將 Shellinabox 的進程 pid 寫入其中,以便於 kill 結束其運行。

-c | –cert=certdir

指定證書目錄

–cgi[=portrange]

以 CGI Web 服務器擴展方式運行
該選項與 –background, –pidfile 和 –port 互斥。
爲了使 Shellinabox 成爲有效運行的 CGI 腳本,可能必須賦予 Shellinabox 以 root 權限,這是不安全的。

–css=filename

指定定義界面配色的 CSS 樣式。默認樣式爲 style.css

-d | –debug

調試模式,將會在 stderr 標準輸出上輸出全部的信息。
該參數與 –quiet 和 –verbose 互斥。

-f | –static-file=url:file

將一些特殊文件替換爲用戶自定義的文件。
如 beep.wav、favicon.ico、ShellInABox.js 、styles.css 、print-styles.css.
也可指定爲某一個包含這些文件的目錄。

-g | –group=gid

指定運行用戶組,默認爲 nogroup

–linkify=[none|normal|aggressive]

指定鏈接地址自動識別的可點擊性。如 url、ftp、email 等。

–localhost-only

只監聽本地回送接口,用於使用反向代理的狀況下。默認狀況下守護進程會監聽全部可用的網絡接口。

-n | –numeric

在 –verbose 模式下使用,日誌記錄輸出時用 ip 地址代替域名 DNS 路由表。
即以客戶端 IP 地址代替域名的輸出。

-p | –port=port

指定監聽端口,默認4200

–pidfile=pidfile

將進程 pid 存放於指定的文件中

-q | –quiet

安靜模式,禁用全部輸出到到 stderr 的信息。
不選擇該參數,並不在後臺模式運行時,標準輸出 stderr 會實時顯示信息。
該參數與 –debug 和 –verbose 互斥。

-s | –service=service

用以註冊更多的應用服務,使得能夠經過不一樣的 URL 路徑訪問這些服務功能。
service 的格式爲:
SERVICE := <url-path> ‘:’ APPLICATION

-t | –disable-ssl

不以 SSL 運行

-u | –user=uid

指定運行用戶,默認 nobody

–user-css=styles

定製用戶可選擇的風格外觀,用戶可經過右鍵菜單進行選取,選取的標識記錄在 cookie 中。

style 的格式:
STYLES := GROUP { ‘;’ GROUP }*
GROUP 的格式:
GROUP := OPTION { ‘,’ OPTION }*
OPTION 的格式:
OPTION := <label> ‘:’ [ '-' | '+' ] <css-file>

-v | –verbose

啓用記錄 Apache-style 日誌文件到 stderr 。
該選項與 –debug 和 –quiet 參數互斥。

–version

打印版本號並退出

更詳細參數含義請查看 help 幫助說明,或者參閱這裏:

https://code.google.com/p/shellinabox/wiki/shellinaboxd_man

shellinaboxd -h

 *shellinaboxd* [ *-b* | *--background*[=_pidfile_] ] [ *-c* | *--cert*=_certdir_ ]
     [ *--cert-fd*=_fd_ ] [ *--css*=_filename_ ] [ -*-cgi*[=_portrange_] ] [ *-d* |
     *--debug* ] [ *-f* | *--static-file*=_url_:_file_ ] [ *-g* | *--group*=_gid_ ] 
     [ *-h* | *--help* ] [ *--linkify*=[*none*|*normal*|*aggressive*] ] 
     [ *--localhost-only* ] [ *--no-beep* ]  [ *-n* | *--numeric* ] [ *--pid-* 
     *file*=_pidfile_ ] [ *-p* | *--port*=_port_ ] [ *-s* | *--service*=_service_ ] 
     [ *-t* | *--disable-ssl* ] [ *--disable-ssl-menu* ] [ *-q* | *--quiet* ] 
     [ *-u* | *--user*=_uid_ ] [ *--user-css*=_styles_ ]  [ *-v* |  *--verbose* ] 
     [ *--version* ]

3.4 一些啓動配置示例

shellinaboxd -t -f beep.wav:/dev/null

不以 SSL 方式,禁用響鈴

shellinaboxd -t -b -q –css=shellinabox/white-on-black.css

不以 SSL 方式,在後檯安靜運行,啓用顏色配置爲黑白界面:

shellinaboxd -b -c /tmp -p 8080

讓 Shellinabox 後臺運行,使用 /tmp 下的證書,啓動端口爲 8080。

shellinaboxd -d -s /terminal1/:user:group:homedirectory:/bin/bash # -s URL,user,group,working-dir,command

綁定一個 bash

shellinaboxd -t -s /:LOGIN -s /who:nobody:nogroup:/:w

經過訪問 https://host:4200/who ,能夠查看當前的登錄用戶列表。
須要 root 權限的帳號執行。

3.5 配置

Shellinabox 主要經過啓動參數進行配置,沒有配置文件。用戶能夠在瀏覽器頁面上單擊鼠標右鍵,選擇幾種設置,該設置會保存在 cookie 當中。

3.5.1 配置反向代理訪問

此外,能夠經過在其餘 Webserver 中配置反向代理,以將其集成在 Web 網站中訪問。

當但願使用反向代理方式時,須要填寫啓動參數 –localhost-only ,另外若是代理服務器不支持 SSL,則 –disable-ssl 參數也須要填寫 。

例:

shellinaboxd –localhost-only –disable-ssl -b -t –css=shellinabox/white-on-black.css

Apache 的參考配置:

<Location /shell>
ProxyPass http://localhost:4200/
Order allow,deny
Allow from all
</Location>

nginx 的參考配置:

location  /  {
          proxy_pass http://127.0.0.1:4200;
}

3.6 關閉 Shellinabox

查找到 Shellinabox 的進程 pid ,kill 便可

ps x | grep shellinaboxd | grep -v grep | awk ‘{print $1}’

也可在啓動時加上 -p 參數,將進程 pid 保存到指定的文件中,須要關閉時讀取它並進行 kill

3.7 常見的啓動失敗緣由

重複使用的端口已在使用中;
缺少足夠的權限來運行服務;
未能找到SSL / TLS證書;
新生成的證書認證目錄不可寫,etc.

4、Shellinabox 使用

經過 URL 打開進入 Web 界面後,全部操做與桌面 SSH 終端相似。如圖示例。

 shellinabox_1

shellinabox_2

5、存在的問題 BUGS

對於 CTRL、ALT、WIN、ESC 這些鍵的中斷截取,可能在不一樣的瀏覽器上會出現失敗。好比在 IE 上可能不被容許截取 ALT 鍵,而始終將其解釋爲菜單的快捷鍵。此時同時按下 WIN+CTRL 或許會有效。

內部剪切板能夠經過右鍵訪問,但 IE 瀏覽器不行。

有的瀏覽器會限制併發請求的鏈接數,這限制了多少AJAX終端能夠同時打開。如出現這方面的問題,須要用戶對本地瀏覽器併發鏈接數進行修改。

6、其餘相關工具

Ajaxterm https://github.com/antonylesuisse/qweb
Anyterm http://anyterm.org/
Commando.io http://commando.io/
Gate One http://liftoffsoftware.com/Products/GateOne
tty.js https://github.com/chjj/tty.js/
KeyBox http://sshkeybox.com/
Webmin http://www.webmin.cn/

7、相關參考

https://code.google.com/p/shellinabox/

http://wiki.ubuntu.org.cn/UbuntuHelp:Shellinabox

http://en.wikipedia.org/wiki/Web-based_SSH

網頁版ssh終端:http://houwenhui.gotoip2.com/archives/1850讓 Shellinabox 支持 ipv6:http://mirror.bjtu.edu.cn/ideal/?p=187

相關文章
相關標籤/搜索