基于 Web 的远程 Terminal 模拟器安装使用详解
http://lzw.me/a/shellinabox.html
一、Shellinabox 简介
Shellinabox 是一个基于 web 的终端模拟器,采用 C 语言编写,使用 Ajax 与后端服务通信。它实现了一个 Webserver,默认监听 4200 端口,在支持 Javascript 和 CSS 的浏览器上访问 http://host:4200 即可。并且可以配置 SSL/TLS 证书,使用 https 方式加密通信。
二、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 install
2.2 安装包安装
在 ubuntu 中你也可以通过下载 deb 软件包进行安装。下载地址如下:
http://packages.ubuntu.com/raring/web/shellinabox
三、Shellinabox 启动与配置使用
3.1 生成 pem 证书
生成 pem 证书,可以 https 方式启动。pem 证书的格式为公钥加私钥,并以 x509 的格式进行打包。
openssl req -new -x509 -nodes -out server.crt -keyout server.key
cat server.crt server.key > /tmp/certificate.pem
SSL 证书不是必须要手动生成的。如果没有生成 SSL 证书,或者启动时没有指定它或无法找到,并且没有使用 -t 参数禁用 SSL,则守护进程会尝试自动生成一个 SSL 证书。
3.2 启动
安装完后可通过以下命令来启动
shellinaboxd -b -c /tmp
查看是否启动:
netstat -ntpl |grep 4200
ps -ef |grep shellinabox
服务默认是 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.
四、Shellinabox 使用
通过 URL 打开进入 Web 界面后,所有操作与桌面 SSH 终端类似。如图示例。
五、存在的问题 BUGS
对于 CTRL、ALT、WIN、ESC 这些键的中断截取,可能在不同的浏览器上会出现失败。比如在 IE 上可能不被允许截取 ALT 键,而始终将其解释为菜单的快捷键。此时同时按下 WIN+CTRL 或许会有效。
内部剪切板可以通过右键访问,但 IE 浏览器不行。
有的浏览器会限制并发请求的连接数,这限制了多少AJAX终端可以同时打开。如出现这方面的问题,需要用户对本地浏览器并发连接数进行修改。
六、其他相关工具
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/
七、相关参考
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
基于 Web 的远程 Terminal 模拟器安装使用详解的更多相关文章
- shellinabox基于web浏览器的终端模拟器
1. Shellinabox介绍 Shellinabox 是一个利用 Ajax 技术构建的基于 Web 浏览器的远程终端模拟器,也就是说安装了该软件之后,服务器端不需要开启 ssh服务,通过 Web ...
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
- hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解
hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解 一,环境: 1,主机规划: 集群中包括3个节点:hadoop01为Master,其余为Salve,节点之间局域网连接 ...
- SSH远程登录和端口转发详解
SSH远程登录和端口转发详解 介绍 SSH 是创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境. SSH 只是协议,有多种实现方式,本文基于其开源实 ...
- Ubuntu19.04的安装过程详解以及操作系统初始化配置
Ubuntu19.04的安装过程详解以及操作系统初始化配置 ...
- windows 安装Git详解
windows 安装Git详解 一.Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Lin ...
- linux PHP 编译安装参数详解
linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- Cloudera CDH 、Impala本地通过Parcel安装配置详解及什么是Parcel
本文引用自:Cloudera CDH .Impala本地通过Parcel安装配置详解及什么是Parcelhttp://www.aboutyun.com/forum.php?mod=viewthread ...
- lvs原理及安装部署详解(参考)
LVS安装使用详解 摘至:http://www.cnblogs.com/MacoLee/p/5856858.html 简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟 ...
随机推荐
- pixi之加载纹理贴图和精灵类的使用
因为之前看过three.js的缘故,所以pixi学习起来也是很快的,主要就是熟悉pixi的API,所以,在这里记录一下pixi常用API,废话不多说,下面上干货. 一.为你的PIXI场景添加图片(精灵 ...
- 分析现有 WPF / Windows Forms 程序能否顺利迁移到 .NET Core 3.0(使用 .NET Core 3.0 Desktop API Analyzer )
今年五月的 Build 大会上,微软说 .NET Core 3.0 将带来 WPF / Windows Forms 这些桌面应用的支持.当然,是通过 Windows 兼容包(Windows Compa ...
- .NET 命令行参数包含应用程序路径吗?
如果你关注过命令行参数,也许发现有时你会在命令行参数的第一个参数中中看到应用程序的路径,有时又不会.那么什么情况下有路径呢? 其实是否有路径只是取决于获取命令行参数的时候用的是什么方法.而这是 Win ...
- 浅谈SQL Server---1
浅谈SQL Server优化要点 https://www.cnblogs.com/wangjiming/p/10123887.html 1.SQL Server 体系结构由哪几部分组成? 2.SQL ...
- 数据库Job定时任务
数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作.但是,Oracle定时器Job时间的处理上,千变万化,今 ...
- c语言 判断文件是否存在
使用access函数 功能: 检查调用进程是否可以对指定的文件执行某种操作. 用法: #include <unistd.h> #include <fcntl.h> int ac ...
- 虚拟化环境下的CentOS7网络环境存在的问题
http://dgd2010.blog.51cto.com/1539422/1592821/ 为什么要进行一次测试? 在使用CentOS7的过程中发现网络部分有很多与CentOS6所不同的地方. 1. ...
- Phonegap 原生控件(Android)与html混合
1. 用命令创建cordova项目 cordova coreate hello com.example.hello hello 2.打开MainActivity 在onCreate方法中加入 setC ...
- tomcat 注冊成操作系統服務
nginx注冊成服務1.把srvany.exe和instsrv.exe拷貝到nginx安裝路徑下面.2.執行命令Command代碼instsrv Nginx D:\nginx\srvany.exe3. ...
- week2--线性表
一.PTA实验作业 题目1:顺序表删除重复元素(6-3) 设计思路 代码截图 PTA提交列表说明 编译错误:写'->'符号的时候总是漏掉'>'; 写'!='符号的时候漏写'!'; 解决方法 ...