Omnisor – High-Level Rust SSH Client for Network Devices 🦀

GitHub: ValdonVitija (ValdonVitijaa) · GitHub
Crates: crates.io: Rust Package Registry

For quite some time, I have been playing with the internals of russh, which is a low-level Rust SSH2 crate (library). I was creating things locally purely for my own use. After some time, I came across async-ssh2-tokio, which abstracts over russh, allowing you to connect to an SSH device and run commands. I tried to use it to connect to Cisco router lab devices(simulated on GNS3), but it didn’t really offer what I needed, so I decided to fork async-ssh2-tokio into omnisor to add specialized support for network devices.

What Omnisor Offers

  • Standard SSH Client – Connect, authenticate, execute commands on network devices, and fetch output (similar to netmiko, but in Rust; except that netmiko is really mature as a library).
  • Vendor Support – Built-in support for Cisco, Juniper, and more coming soon. (The project structure makes it quite easy to add support for new vendors.)
  • Legacy Device Support – Configurable SSH algorithms for older network devices.

Currently omnisor is written in Rust for Rust, but if this crate becomes stable enough with extensive support, I will offer try to offer python bindings, to make this library usable from Python.