Skip to content

stuicey/SSHy

Repository files navigation

SSH: HTML5 Based SSH Client

SSHy is a HTML5 SSHv2 web client implementing E2E encryption that runs well on modern web browsers.

About

SSHy is a fast and responsive SSHv2 web client with end-to-end encryption supplied by SJCL. SSHy implements a minimal subset of the SSHv2 protocol that provides and controls a pseudo-terminal. The terminal front-end interface is provided by xterm.js. Currently in use at https://linuxzoo.net , a non-functional preview is available at https://stuicey.github.io/SSHy/.

Features

  • 8 Preset color schemes & Xresources upload and import
  • UTF-8 Character support
  • Automatic local echo detection
  • Customisable terminal & font size
  • Copy and Paste support for Chrome & Firefox
  • Network Traffic Monitor

Installation

Either copy or clone the repository into a directory being currently served by a web server and navigate to index.html.

Two versions of this project are supplied:

  • index.html - The main page featuring a modal login container and modifiable destination IP.
  • wrapper.html - A minimal wrapper intended for use with CGI builds. Features interactive terminal login and fixed destination IP. By default SSH-RSA is disabled on this version. To enable it comment out transport.settings.rsaCheckEnabled = false; inside wrapper.html.

The required files are:

css/*
fonts/*
js/*
index.html OR wrapper.html

For best performance it is recommended to host a websocket proxy close to the traffic origin or destination. This can be done by modifying wsproxyURL near the top of index.html or wrapper.html to the IP or domain of a personal websocket proxy.

This project is intended to be used with wsProxy provided as a submodule in wsproxy/. This application allows for IP multiplexing by appending the destination IP to the websocket proxy URI. More details on this application an be obtained from the related README.

git submodule update --init --recursive
npm i -g  wsproxy/
wsproxy

Other websocket proxies such as Websockify should be compatable with wrapper.html.

Building

This project utilises the Google Closure Compiler to minify and compile the JavaScript. The two versions index.html and wrapper.html can be either compiled manually or through Atom build.

Index.html

java -jar closure-compiler.jar --js_output_file=js/combinedLibs.comb.js js/defines.js js/src/*.js js/*.js '!**.comb.js' '!**Client.js'

Wrapper.html

java -jar closure-compiler.jar --js_output_file=js/combinedJS.comb.js js/defines.js js/src/*.js js/*.js '!**.comb.js'

Compatability

SSHy was designed to be compatable with a majority of SSHv2 servers. SSHy should be able to connect to any standardly configured SSHv2 server that has the following algorithms enabled:

diffie-hellman-group-exchange, diffie-hellman-group14, diffie-hellman-group1
ssh-rsa
aes128-ctr
hmac

Both SHA1 and SHA256 are supported for diffie-hellman and HMAC algorithms.