1] Ajaxterm :

Ajaxterm est comme son nom le laisse penser, un terminal en Ajax, donc accessible depuis un naviguateur web.
Il s’installe sur une première machine à laquelle on veut accéder à distance et ensuite depuis n’importe quel navigateur on peut accéder au terminal.
Le fonctionnement est assez simple, Ajaxterm va écouter sur le port 8022 (par défaut) et envoyer les informations sur le port par défaut (22) de SSH. Il faut donc que ssh soit actif sur le poste pour qu’Ajaxterm puisse vous ouvrir la connection !
But ? « C’est débile parce qu’il faudra que le port ssh soit actif de toute façon ! ». Certes, c’est pas très utile tant que vous avez le droit d’utiliser ssh (ou putty) depuis votre poste/réseau. Toutefois quand les ports sont bloqués, la connexion surveillée, etc etc … il sera quand même possible d’accéder à un terminal en passant par du http ! Donc au final pas si inutile que cela =)

2] Installation :

Il est nécessaire d’avoir un serveur web, le classique apache va suffir :
aptitude install apache2

Ensuite, pour debian & Co, il existe un beau paquet tout propre : ajaxterm
aptitude install ajaxterm

Pour les autres distributions, je vous laisse consulter les sources : https://github.com/antonylesuisse/qweb

En l’état, Ajaxterm devrait être accessible en local uniquement à l’adresse : http://localhost:8022

3] Configuration pour l’extérieur :

Pour pouvoir accéder depuis l’extérieur/un autre poste à Ajaxterm, on va utiliser du https.
On commence par activer les modules suivants d’Apache : proxy, proxy_http et ssl. La commande suivante fera donc très bien l’affaire :
a2enmod proxy proxy_http ssl

Il faut ensuite créer un fichier de configuration pour Ajaxterm :
vi /etc/apache2/sites-available/ajaxterm# Si cette ligne est déjà présente dans /etc/apache2/ports.conf, la commenter :
Listen 443
NameVirtualHost *:443
ServerName localhost
SSLEngine On
SSLCertificateKeyFile ssl/mykey.key
SSLCertificateFile ssl/mycert.crt

ProxyRequests Off

Order deny,allow
Allow from all
ProxyPass /ajaxterm/ http://localhost:8022/
ProxyPassReverse /ajaxterm/ http://localhost:8022/

On sauvegarde le fichier et on active le site avec la commande :
a2ensite ajaxterm

Dernier point, il faut créer le certificat pour le https. On va dans le dossier /etc/apache2/ssl (le créer si nécessaire) :
cd /etc/apache2/ssl
Création de la clé :
openssl genrsa -out mykey.key 1024
Création du certificat :
openssl req -new -x509 -days 365 -key mykey.key -out mycert.crtCountry Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:ma_belle_région
Locality Name (eg, city) []:mon_pti_village
Organization Name (eg, company) [Internet Widgits Pty Ltd]:gardouille_land
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:LE_NOM_DE_LA_MACHINE
Email Address []:adresse@mail.com

On redémarre apache :
service apache2 restart

Et pour finir, un test à l’adresse : https://mon_ip/ajaxterm/
Si tout s’est bien passé, Firefox/Iceweasel (ou tout autre navigateur libre) demandera d’accepter le certificat. Et vous aurez ensuite accès à un prompt pour vous identifier.

4] Configuration supplémentaires :

/etc/ajaxterm.conf
Ce fichier permet de changer la taille du terminal dans le navigateur. Les variables sont déjà renseignées.

/etc/init.d/ajaxterm
Ce fichier, qui permet de lancer Ajaxterm (entre autre), possède les variables sur lesquelles Ajaxterm va écouter (8022) et envoyer (22). N’ayant pas ssh sur le port 22, c’est ici qu’il faut modifier sa valeur (variable SERVERPORT).
Toute modification devra être suivie du redémarrage du service (évidemment) :
/etc/init.d/ajaxterm restart

5] Erreur rencontrée:

Erreur rencontrée number one :

Apache et Ajaxterm se lançait correctement et lorsque j’arrivais sur la page d’ajaxterm: écran blanc.
cat /var/log/apache2/error.log[warn] proxy: No protocol handler was valid for the URL /ajaxterm/. If you are using a DSO v\
ersion of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

J’avais activé uniquement le module proxy d’Apache et pas proxy_http comme indiqué dans certain tuto.
Il semblerait que d’autres personnes aient également résolu ce problème avec :
/etc/init.d/apache2 force-reload

Erreur rencontrée number two :

J’avais bien accès au login, mais Ajaxterm ne me proposait pas d’entrer mon mot de passe. C’était simplement dû au fait que j’avais zappé de modifier le port correspond à SSH.

6] Alternative :

SSLH : permet également de faire du ssh en passant par le port 443. Très bien expliqué ici (tuto un peu ancien mais toujours d’actualité, simplement que le paquet sslh est passé en stable). Contrairement à Ajaxterm, il ne sera pas possible de se connecter à partir d’un navigateur (point fort je trouve), ce qui ne plaira pas à ceux qui ne peuvent télécharger de logiciel ou utiliser de clé usb.

,