我一直坚信,做项目需要通过文档来总结。一来可以梳理自己的项目和思路,二来可以备忘,三则可以为有同样需求的朋友提供一些参考。如果一直不进行总结,真的很可能是写了多年的代码,却只有一年的经验。当学习一项新技术时,有时看了很多资料,依旧一知半解,但如果能用自己的方式把这项技术描述出来,它慢慢地开始成为自己的知识,当多次地重复温习并使用它时,它才不会被遗忘,才会真正成为自己的技术。

  browser shell,通俗的说就是用浏览器模拟出secureCRT、putty 等工具的功能,实现远程登录。先来一张图,直观了解一下:

browser shell-LMLPHP

但是既然有了secureCRT、putty这类工具,还要browser shell有什么用呢?

一是项目需求;二是它确实有它的便利,可以不用在浏览器和CRT之间频繁切换,节约时间成本;三是putty等软件不能奏效的时候,比如有可能在防火墙后面不能使用这些工具访问远程系统,或防火墙只允许HTTPS流量才能通过;

解决方案:使用shellinabox;

Shellinabox 是一个基于 web 的终端模拟器,采用 C 语言编写,使用 Ajax 与后端服务通信。它实现了一个 Webserver,默认监听 4200 端口,在支持 Javascript 和 CSS 的浏览器上访问 http://host:4200 即可。并且可以配置 SSL/TLS 证书,使用 https 方式加密通信。它和SSH没有任何关系,也不是可靠安全地远程控制系统的方式。

ubuntu下的安装:

获取deb

wget http://ftp.cn.debian.org/debian/pool/main/s/shellinabox/shellinabox_2.14-1_i386.deb

安装:

sudo dpkg -i shellinabox_2.14-1_i386.deb

配置:

sudo vim /etc/default/shellinabox

修改如下:

[wss@localhost test]$cat /etc/default/shellinabox
# Should shellinaboxd start automatically
SHELLINABOX_DAEMON_START=1
# TCP port that shellinboxd's webserver listens on
SHELLINABOX_PORT=8800
# Parameters that are managed by the system and usually should not need
# changing:
SHELLINABOX_DATADIR=/var/lib/shellinabox
SHELLINABOX_USER=shellinabox
SHELLINABOX_GROUP=shellinabox
# Any optional arguments (e.g. extra service definitions). Make sure
# that that argument is quoted.
#
# Beeps are disabled because of reports of the VLC plugin crashing
# Firefox on Linux/x86_64.
SHELLINABOX_ARGS="--no-beep"
[wss@localhost test]$
 
启动:
shellinaboxd -b -c /tmp -p 8800
 
访问验证:在浏览器输入http://yourServerIp:8800
05-08 15:07