通常情況下,我們在訪問任何遠程服務器時,會使用常見的通信工具如OpenSSH和Putty等。但是,有可能我們在防火牆後面不能使用這些工具訪問遠程系統,或者防火牆只允許HTTPS流量才能通過。不用擔心!即使你在這樣的防火牆後面,我們依然有辦法來訪問你的遠程系統。而且,你不需要安裝任何類似於OpenSSH或Putty的通訊工具。你只需要有一個支持JavaScript和CSS的現代浏覽器,並且你不用安裝任何插件或第三方應用軟件。
這個 Shell In A Box,發音是shellinabox,是由Markus Gutschke開發的一款自由開源的基於Web的Ajax的終端模擬器。它使用AJAX技術,通過Web浏覽器提供了類似原生的 Shell 的外觀和感受。
這個shellinaboxd守護進程實現了一個Web服務器,能夠偵聽指定的端口。其Web服務器可以發布一個或多個服務,這些服務顯示在用 AJAX Web 應用實現的VT100模擬器中。默認情況下,端口為4200。你可以更改默認端口到任意選擇的任意端口號。在你的遠程服務器安裝shellinabox以後,如果你想從本地系統接入,打開Web浏覽器並導航到:http://IP-Address:4200/。輸入你的用戶名和密碼,然後就可以開始使用你遠程系統的Shell。看起來很有趣,不是嗎?確實 有趣!
免責聲明:
shellinabox不是SSH客戶端或任何安全軟件。它僅僅是一個應用程序,能夠通過Web浏覽器模擬一個遠程系統的Shell。同時,它和SSH沒有任何關系。這不是可靠的安全地遠程控制您的系統的方式。這只是迄今為止最簡單的方法之一。無論如何,你都不應該在任何公共網絡上運行它。
shellinabox在默認庫是可用的。所以,你可以使用命令來安裝它:
$ sudo apt-get install shellinabox
首先,使用命令安裝EPEL倉庫:
# yum install epel-release
然後,使用命令安裝shellinabox:
# yum install shellinabox
完成!
正如我之前提到的,shellinabox偵聽端口默認為4200。你可以將此端口更改為任意數字,以防別人猜到。
在Debian/Ubuntu系統上shellinabox配置文件的默認位置是/etc/default/shellinabox。在RHEL/CentOS/Fedora上,默認位置在/etc/sysconfig/shellinaboxd。
如果要更改默認端口,
在Debian / Ubuntu:
$ sudo vi /etc/default/shellinabox
在RHEL / CentOS / Fedora:
# vi /etc/sysconfig/shellinaboxd
更改你的端口到任意數字。因為我在本地網絡上測試它,所以我使用默認值。
# Shell in a box daemon configuration
# For details see shellinaboxd man page
# Basic options
USER=shellinabox
GROUP=shellinabox
CERTDIR=/var/lib/shellinabox
PORT=4200
OPTS="--disable-ssl-menu -s /:LOGIN"
# Additional examples with custom options:
# Fancy configuration with right-click menu choice for black-on-white:
# OPTS="--user-css Normal:+black-on-white.css,Reverse:-white-on-black.css --disable-ssl-menu -s /:LOGIN"
# Simple configuration for running it as an SSH console with SSL disabled:
# OPTS="-t -s /:SSH:host.example.com"
重啟shelinabox服務。
在Debian/Ubuntu:
$ sudo systemctl restart shellinabox
或者
$ sudo service shellinabox restart
在RHEL/CentOS系統,運行下面的命令能在每次重啟時自動啟動shellinaboxd服務
# systemctl enable shellinaboxd
或者
# chkconfig shellinaboxd on
如果你正在運行一個防火牆,記得要打開端口4200或任何你指定的端口。
例如,在RHEL/CentOS系統,你可以如下圖所示允許端口。
# firewall-cmd --permanent --add-port=4200/tcp
# firewall-cmd --reload
現在,在你的客戶端系統,打開Web浏覽器並導航到:https://ip-address-of-remote-servers:4200。
注意:如果你改變了端口,請填寫修改後的端口。
你會得到一個證書問題的警告信息。接受該證書並繼續。
Privacy error - Google Chrome_001
輸入遠程系統的用戶名和密碼。現在,您就能夠從浏覽器本身訪問遠程系統的外殼。
Shell In A Box - Google Chrome_003
右鍵點擊你浏覽器的空白位置。你可以得到一些有很有用的額外菜單選項。
Shell In A Box - Google Chrome_004
從現在開始,你可以通過本地系統的Web浏覽器在你的遠程服務器隨意操作。
當你完成工作時,記得輸入exit
退出。
當再次連接到遠程系統時,單擊連接按鈕,然後輸入遠程服務器的用戶名和密碼。
Shell In A Box - Google Chrome_005
如果想了解shellinabox更多細節,在你的終端鍵入下面的命令:
# man shellinabox
或者
# shellinaboxd -help
同時,參考shellinabox 在wiki頁面的介紹,來了解shellinabox的綜合使用細節。
正如我之前提到的,如果你在服務器運行在防火牆後面,那麼基於web的SSH工具是非常有用的。有許多基於web的SSH工具,但shellinabox是非常簡單而有用的工具,可以從的網絡上的任何地方,模擬一個遠程系統的Shell。因為它是基於浏覽器的,所以你可以從任何設備訪問您的遠程服務器,只要你有一個支持JavaScript和CSS的浏覽器。
就這些啦。祝你今天有個好心情!
via: shellinabox – A Web based AJAX Terminal Emulator
作者:SK 譯者:xiaoyu33 校對:wxy
本文由 LCTT 原創翻譯,Linux中國 榮譽推出