Web-based SSH


Web-based SSH makes it possible to access Secure Shell servers through standard web browsers. Respective clients are typically based on JavaScript/Ajax or JavaScript/WebSockets, and, if they work together with an Ajax/WebSocket-to-SSH proxy, can be used to access SSH servers from behind a firewall or proxy that allows HTTP traffic but does not allow SSH traffic.

Technology

Web-based SSH clients basically consist of the following parts:
Web-based SSH servers that utilize client-side terminal emulation typically transmit the raw terminal output from the SSH server directly to the client. This has the advantage of offloading the process of translating terminal output into HTML on to the client. The disadvantage of this method is that it is limited by the capabilities of JavaScript and it will use up a non-trivial amount of the client's CPU and memory to process the incoming character stream. It also relies on the client to keep track of the terminal state and respond to escape sequences.
Client-side terminal emulator example: vt100.js
ent expressly requests an update. The advantage of this method is that the state of the terminal remains persistent even if the user connects to their existing session from a different web browser. It also enables the server to act upon terminal output even if the user is disconnected. The disadvantage of this method is that it uses up more CPU and memory on the server.
Server-side terminal emulator example: terminal.py

Advantages

The main advantages of web-based SSH can be summarized as follows:
The following issues have to be considered and are important when using a web-based SSH client:
Google's Secure Shell extension for Chrome and Chromium pairs the JavaScript hterm terminal emulator with OpenSSH client code running on Native Client. The Secure Shell extension works with non-Google HTTP-to-SSH proxies via proxy hooks, and third-party application nassh-relay can use those hooks to enable the Secure Shell extension to establish an SSH connection over XMLHttpRequest or WebSocket transport.
shellinabox operates as a stand-alone service or in conjunction with nginx to provide HTTPS access to a login shell, and is packaged for Debian and RedHat -derived Linux distributions.
webssh is a similar solution written in Python.
Bastillion is a self hosted, web-based bastion host with auditing and key management capabilities. Users connect to a centralized server over HTTPS and SSH connections are proxied through a secure WebSocket transport.
Because of intermittent network connections with a connection timeouts. Mosh by MIT can be a better solution It utilizes SSH at first then UDP from thereon.
FireSSH is a browser plug-in that works on Firefox ESR and Waterfox.
There are also JavaScript libraries that allow to write terminal like websites, example are jQuery Terminal and XTerm.js