我们通常使用众所周知的通信工具(如OpenSSH和Putty等)访问任何远程服务器。但是,有一件重要的事情是,我们不能使用防火墙或只允许HTTPS流量的防火墙后面的工具访问远程系统。别担心!我们仍然有一些选项可以访问您的远程系统,即使您在防火墙后面。此外,您不需要安装任何通信工具,如OpenSSH或Putty。您只需要一个启用JavaScript和CSS的现代浏览器。而且您也不需要安装任何插件或第三方软件。

在一个盒子里遇见Shell,读作shellinabox,一个免费的,开源的,基于Web的AJAX终端模拟器,由Markus Gutschke开发。它使用AJAX技术通过Web浏览器提供本机shell的外观和感觉。shellinaboxd守护程序实现在指定端口上侦听的Web服务器。Web服务器发布一个或多个服务,这些服务将显示在作为AJAX web应用程序实现的VT100模拟器中。缺省情况下,端口为4200。您可以将默认端口更改为您选择的任何随机端口号。在要从本地系统访问的所有远程服务器上安装shellinabox后,打开Web浏览器并导航到:http://IP-地址:4200/。输入用户名和密码,然后开始使用远程系统的shell。

虽然从centos7/rhel7以后,可以使用cockpit进行web管理,里面也带有一个web终端,不过该终端无法复制粘贴,所以也不是一个好的选择。

安装使用

 1# yum install epel-release
 2# yum install shellinabox
 3
 4In Debian/Ubuntu:
 5$ sudo vi /etc/default/shellinabox
 6
 7In RHEL/CentOS/Fedora:
 8# vi /etc/sysconfig/shellinaboxd
 9
10# firewall-cmd --permanent --add-port=4200/tcp
11# firewall-cmd --reload

shellinabox默认监听端口4200。您可以将此端口更改为任意选择的随机数,以使任何人都难以猜测。默认情况下,在Debian/Uubuntu系统中,shellinabox配置文件位于/etc/default/shellinabox文件中。在RHEL/CentOS/Fedora中,配置文件的默认位置是/etc/sysconfig/shellinaboxd。

配置文件内容参考如下:

 1# Should shellinaboxd start automatically
 2SHELLINABOX_DAEMON_START=1
 3
 4# TCP port that shellinboxd's webserver listens on
 5SHELLINABOX_PORT=6175
 6
 7# Parameters that are managed by the system and usually should not need
 8# changing:
 9# SHELLINABOX_DATADIR=/var/lib/shellinabox
10# SHELLINABOX_USER=shellinabox
11# SHELLINABOX_GROUP=shellinabox
12
13# Any optional arguments (e.g. extra service definitions).  Make sure
14# that that argument is quoted.
15#
16#   Beeps are disabled because of reports of the VLC plugin crashing
17#   Firefox on Linux/x86_64.
18SHELLINABOX_ARGS="--no-beep"
19
20# specify the IP address of an SSH server
21OPTS="-s /:SSH:192.168.0.140"
22
23# if you want to restrict access to shellinaboxd from localhost only
24OPTS="-s /:SSH:192.168.0.140 --localhost-only"

最终界面见下图,不过需要注意的是,部分云厂商由于做了安全加固,无法直接使用root用户进行登录,需要通过普通用户切换为root。

shellinabox
shellinabox