You are here

ESP32 port of libssh

After significant and long-standing demand, I am porting the libssh library to the ESP32 system-on-chip as an Arduino library.

Milestones

  • Compiles without errors.
  • Links without any symbols missing.
  • SSH Server example functional (create server key and run ssh server).
  • SSH Client example functional.

Further Work

  • Create a pull request for arduino-esp32 to make minor fixes and allow this library to compile (done, but needs to be re-done on the upstream esp-idf repository).
  • Make the source tree release-clean (complete).
  • Push to GitHub (done, version 0.2.0 first pushed on 25th April 2020).
  • Publish on the Arduino library list (complete).

Bugs to be squashed

  • SSH server does not listen on IPv6 addresses, only IPv4 addresses (done, example listened on IPv4 address 0.0.0.0 by default (so supplied a parameter to permit both IPv4 and IPv6).
  • Timeout when SSH client attempts connection to server over a routed TCP/IP connection (no longer an issue). I believe this is due to a more generic issue with the ESP32 TCP/IP stack since I have witnessed it with other code the first time a large network packet is returned from the ESP32 to a client that is not on the ESP32's local network.
  • If you use PuTTY as a client to the ESP32 running a server, then on the PuTTY bugs panel you may need to enable Chokes on PuTTY's SSH-2 ‘winadj’ requests.  This will prevent random disconnections that may occur after a few minutes have elapsed.

The library and source code are available on GitHub in the LibSSH-ESP32 project and have moved to a stable release now.

Classifications: