-
-
Notifications
You must be signed in to change notification settings - Fork 359
feat: rust-native ssh support #2081
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
The `russh` feature shouldn't require `async-std`, but that feature was gating the whole async subsystem, so this moves things around a little.
9a88795
to
6b91e82
Compare
This is just WOW! I am truly amazed by this being tackled as a contribution, and hope to have some time to take a look at the code soon.Also thanks so much for the detailed PR notes, I found them very helpful to get a first understanding on what's planned and how. First of all, I agree that it might be best to get this to work as proof-of-concept, but also think that this means it has to be wired up with Regarding |
Super happy to help.
It's available in
I think the solution would be to have
Nice, yeah I'd be happy to do that... if you can provide some guidance and I can try to tackle that. |
Thanks for elaborating.
It's generally fine to adjust the API to be more suitable. The reason it is what it is is merely that the requirements allows for it, and it was easiest to do it that way. Having just one argument there would probably shift the complexity elsewhere in the code, but it might still be preferable if mostly Besides that, I don't know if anything can be done about the cargo-deny error, pulling in a 'broken' dependency without mitigation doesn't seem great. Maybe there is a Cargo feature to toggle it off?
it looks like in order to use this transport, the caller would have to pass in a custom one to the |
This is a very basic implementation of a rust-native SSH transport (#1246). I've got as far as a successful
handshake
method call.The approach used is:
russh
and declare a new feature to enable itTransport
traitfutures_io
AsyncRead/Write
traits to Tokio'sAsyncRead/Write
(this was pretty involved, maybe there's a simpler way)The PR lacks the following:
Option
struct for now and let people add options as they need themHandler
implementation, things like detecting disconnects or channel failures of some kind