SolarNetwork

News » SolarSSH — SolarNode remote administration

SolarNode devices generally don’t require much maintenance once they are initially deployed and configured. Like any IoT device, however, they do require periodic maintenance, for example to apply security patches or add/update SolarNode plugins. SolarNodes provide two main methods for administrative and maintenance tasks:

  1. use a web browser to access the SolarNode setup GUI
  2. use a SSH client to access the SolarNode OS shell

Both of these methods require network access from you to the node, but SolarNode devices are often deployed into networks where it can be very hard, or even impossible, to access them over the network. Essentially they can make outbound connections (to post the data they collect to SolarNetwork), but there isn’t a way for inbound connections (from you to the node) to reach them.

SolarNetwork now supports a way to work around this limitation, and we call it SolarSSH. SolarSSH allows you to access both the SolarNode setup GUI and the OS shell from a web browser. It works by using a SSH proxy to act as an intermediate server that both the SolarNode device you want to administer, and your web browser, connect to. SolarNode connects to SolarSSH securely via SSH (hence, the name SolarSSH) and your web browser connects to SolarSSH securely via HTTPS. Once both systems are connected to SolarSSH, SolarSSH acts as both a web proxy for you to access the SolarNode setup GUI and a telnet proxy via a WebSocket connection for you to access the SolarNode OS shell.

Here is a diagram that shows how the various components involved with SolarSSH initiate network connections, and the protocols used:

SolarSSH network connections

We don’t want nodes to establish and maintain permanent SSH connections to SolarSSH. Instead we need a way to toggle the SolarSSH connection on and off, on demand. To accomplish that, SolarSSH uses the exisiting SolarNetwork Instruction API, via the new StartRemoteSsh and StopRemoteSsh instructions.

SolarSSH exposes a REST API for applications to interact with. We’ve written a JavaScript package that makes using the API a breeze, and then a basic application using that package called SolarSSH Web Terminal that allows you to access the SolarNode setup GUI and OS shell of nodes deployed with SolarSSH support, all from your web browser. Here is a demo of using SolarSSH Web Terminal to connect to a remote SolarNode:

SolarSSH demo

Here is a screen shot of accessing the SolarNode setup GUI:

SolarSSH demo

We’ve been using SolarSSH to remotely administer nodes, some connected to the internet via public mobile networks, to great success.