Tutorial: web-ssh

I was looking for a web based terminal emulator and finally found "Shell In A Box".
It is a linux service that is running a webservice that uses JS/CSS to build up a great web based terminal.

Installation is easy because it is part of all major repositories:

apt-get install openssl shellinabox

The default settings are ok but you can change some values:

nano /etc/default/shellinabox

Content:

# Should shellinaboxd start automatically
SHELLINABOX_DAEMON_START=1

# TCP port that shellinboxd's webserver listens on
SHELLINABOX_PORT=4200

# 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 --localhost-only"

# specify the IP address and the post of a destination SSH
#SHELLINABOX_ARGS="--o-beep -s /:SSH:11.22.33.44 -p 22 --disable-ssl-menu"

One important setting:

--localhost-only

So you can use your favorite web server to secure the access to the local shellinabox service (recommended).

A lighttpd configuration would look like this:

$HTTP["host"] =~ "shell.domain.com" {
  auth.backend = "htpasswd"
  auth.backend.htpasswd.userfile = "/etc/lighttpd/shell"
  auth.require = ("/" => (
     "method" => "basic",
     "realm" => "shell",
     "require" => "valid-user"
  ))

  proxy.balance = "fair"
  proxy.server = ( "" => (
                ( "host" => "127.0.0.1", "port" => 4200 )
                )
  )
}

Some screenshots of the web frontend:

shellinabox1.JPG

shellinabox2.JPG

shellinabox3.JPG

shellinabox4.JPG