Terminal shell (ssh) via un navigateur web (http)

BUT : Accéder à une console/un terminal shell/bash depuis un navigateur web

Installation :
via apt avec ‘sudo apt install openssl shellinabox

bzg@uc:~$ sudo apt install openssl shellinabox

La configuration se fait en éditant le fichier : /etc/default/shellinabox

bzg@uc:~$ sudo nano /etc/default/shellinabox
# 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"

SHELLINABOX_DAEMON_START=1 : permet de démarrer en automatique le service ‘shellinabox’ (sinon le mettre à 0)
SHELLINABOX_PORT=4200 : 4200 est le port par defaut sur lequel il faut se connecter pour accéder au terminal shell/ssh. Pour des raison évidente de sécurité il vaut mieux le changer
SHELLINABOX_ARGS= »–no-beep » : C’est là que nous mettrons les arguments de ‘shellinabox’, par défaut les beeps du terminal sont inhibés pour éviter des bugs sur ‘firefox’ avec le plugin ‘VLC’

Changement du port d’écoute :
Changer ‘SHELLINABOX_PORT=4200’ par ‘SHELLINABOX_PORT=4242‘ par exemple pour que le port d’écoute soit 4242
Dans ce cas de figure ne pas oublier de paramétrer le firewall et d’ouvrir le port 4242

Remplacer le port d’écoute par une sous adresse du style https://serveur/shellinabox sur un serveur apache :
Dans ce cas inutile de changer le port d’écoute ni d’ouvrir le port sur le firewall
Changer ‘SHELLINABOX_ARGS= »–no-beep »‘ par ‘SHELLINABOX_ARGS= »–localhost-only –disable-ssl »
L’option –localhost-only n’acceptera que les connections depuis le localhost/127.0.0.1
L’option –disable-ssl supprimera le protocole ssl puisque nous alors faire une redirection web interne
Le fichier ‘/etc/default/shellinabox’ devient :

# 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"
SHELLINABOX_ARGS="--localhost-only --disable-ssl"

Pour mettre en place la redirection du port vers une adresse il faut installer le serveur web ‘apache’ puis les modules ‘proxy’ par les commande ‘sudo apt install apache2‘ puis ‘sudo a2enmod proxy proxy_http

bzg@uc:~$ sudo apt install apache2
bzg@uc:~$ sudo a2enmod proxy proxy_http

puis dans le fichier de configuration du site principal ‘/etc/apache2/sites-available/000-default.conf’ il faut ajouter les deux lignes suivantes :

      ProxyPass "/shellinabox" "http://127.0.0.1:4200"
      ProxyPassReverse "/shellinabox" "http://127.0.0.1:4200"

Il faut relancer ‘apache’ par la commande ‘sudo systemctl restart apache2‘ et ‘shellinabox’ par la commande ‘sudo systemctl restart shellinabox

bzg@uc:~$ sudo systemctl restart apache2
bzg@uc:~$ sudo systemctl restart shellinabox

Pour accéder au terminal avec votre explorateur web (Firefox, google chrome, etc) :
Accéder à l’adresse du serveur https://xxx.xxx.xxx.xxx:4200 si vous avez laissé les paramètres par défaut
https://xxx.xxx.xxx.xxx:4242 si vous avez modifié le port d’écoute 4200 par 4242 (sinon mettre le port que vous avez configuré)
http://serveur_web/shellinabox si vous avez configuré la redirection du port vers une adresse

En résumé : Il est possible d’accéder à un terminal ssh via un explorateur web