makiko icon indicating copy to clipboard operation
makiko copied to clipboard

comparison to russh

Open rukai opened this issue 2 years ago • 2 comments

This library looks really nice and im trying to compare it against russh. I would appreciate a section in the readme that explains what differentiates makiko from russh.

One difference I can see is that russh also supports writing ssh servers. I'm hoping that makiko focusing on writing clients makes it better for that.

Thanks!

rukai avatar Jun 29 '23 01:06 rukai

Hi, this is a good point :) The main difference is in the API, Makiko is a bit lower-level, it never spawns tasks or connects to sockets, so it gives more control to the user. Also, with Makiko, asynchronous events (such as the server's public key or data on a channel) are consumed with a channel-like receiver interface (ClientReceiver, SessionReceiver, ...), but with Russh/Thrussh, you define callbacks with a trait object.

Thrussh also implemented very limited crypto (just a single key exchange algorithm, public key algorithm and cipher), but Russh added support for more, so it now supports almost everything that Makiko supports.

honzasp avatar Jun 29 '23 09:06 honzasp

I've been working with russh today and I think it's worth noting that the handler trait is optional. By default it uses channel receivers similar to makiko. if a method is defined on the handler trait then I believe the corresponding message type is no longer sent to the receiver.

rukai avatar Jun 29 '23 12:06 rukai