基于 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

时间: 2024-11-02 20:37:15

基于 Web 的远程 Terminal 模拟器安装使用详解的相关文章

使用LVS负载均衡搭建web群集的原理及安装配置详解

一.负载均衡LVS基本介绍 LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器.这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver.org. LVS是Linux内核标准的一部分.LVS是一个实现负载均衡集群的开源软件项目,通过 LVS 的负载均衡技术和 Linux操作系统可以实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性.可扩展性和可操作性.LVS架构从逻辑上可分为调度层.Se

shellinabox基于web浏览器的终端模拟器

1. Shellinabox介绍 Shellinabox 是一个利用 Ajax 技术构建的基于 Web 浏览器的远程终端模拟器,也就是说安装了该软件之后,服务器端不需要开启 ssh服务,通过 Web 浏览器就可以对远程主机进行操作,但是你的web浏览器需要支持AJAX/Javascript和CSS,因此可以用http://localhost:4200来登录到你的系统,并且默认情况下启用了SSL/TLS证书,需要用https://localhost:4200来登录. 默认情况下shellinabo

firefox os 开发模拟器1.4版本安装开发详解

首先在使用firefox os 模拟器的时候必须先下载firefox 浏览器,这个是众多web开发者必备的工具,下载地址firefox 浏览器 ,在最新的官方版本是1.5版的模拟器,但是现在还不是很稳定,所以暂时就以较稳定的1.4版本做为蓝本供开发者交流学习,下载地址firefox os 模拟器 ,接下了就是图文教程,教你一步一步安装1.4版的firefox os 模拟器,开始新的firefox os开发之旅! 编辑(5狐网)--更多资料教程请到Firefox os 论坛(5狐网) 连接地址:h

nginx的安装配置详解

title: nginx的安装配置详解tags: nginx,虚拟服务器,curl nginx的安装配置详解 1. 介绍各个常用的服务端口 21 ftp :22 ssh:25 smtp:3306 mysql:873 rsync:3389 远程桌面:161 snmp:111 rpcbind:80 www http:443 https:110 pop3:53 dns:514 rsyslog 我们常用的nslookup和dig查询域名解析工具的安装包为bind-utils,如yum install b

使用LVS实现负载均衡原理及安装配置详解

转:http://www.cnblogs.com/liwei0526vip/p/6370103.html 使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director

使用 LVS 实现负载均衡原理及安装配置详解

使用 LVS 实现负载均衡原理及安装配置详解 来源:肖邦linux 发布时间:2017-02-19 阅读次数:106 0 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用

samba 4.7.16 安装配置详解

系统:Centos 7.4 x64位 服务版本:samba-4.7.1.samba-client-4.7 Samba 简介 Samba 是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享. Samba由两个主要程序组成,它们是smbd和nmbd.这两个守护进程在服务

hbase-0.94安装方法详解

先决条件: 1)java环境,需要安装java1.6以上版本 2)hadoop环境,由于HBase架构是基于其他文件存储系统的,因此在分布式模式下安装Hadoop是必须的,但是,如果运行在单价模式下,此条件可以省略.Hadoop-1.2.1的安装方法参考 hadoop-1.2.1安装方法详解 注意:安装时要注意Hadoop和HBase之间的版本关系,如果不匹配,很可能会影响HBase系统的稳定性. 本帖教程采用的hadoop是hadoop-1.2.1,hbase采用的是hbase-0.94 hb

LNMP编译安装之msyql安装--图文详解

LNMP编译安装之msyql安装--图文详解 1.前言 本次安装采用源码安装,主要资源包从官网下载,次要依赖则使用yum进行安装,本篇只涉及mysql的安装,msyql远程登录,不涉及mysql具体配置.该教程纯属安装,不涉及任何重要知识点,老少皆宜. 2.安装步骤 2.1.下载boost(只下载不安装) wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz 2.2.解压bosot t