Skip to content

Built-in SSH transport #1246

Open
Open
@Byron

Description

@Byron

Summary 💡

A built-in transport that allows to manually configure an SSH connection without the need for the ssh program.

Candidates for the ssh part are:

  • russh - Rust
    • even with limited support for ssh-agent, which makes it something I'd seriously look at
  • ssh2 - Rust bindings to libssh2
  • libssh2 - C library
    • used by libgit2
    • desirable license, but different feature set, maybe less mature than libssh
  • libssh - C library
    • Maybe more mature than libssh2, but has undesirable license

Motivation 🔦

Cargo should be standalone, and right now it needs the ssh-program to clone ssh:// URLs. Even though this is beneficial on Linux, it's usually not very portable and often won't work at all on Windows. git2 has ssh support built-in using libssh which works, but has a less desirable license than libssh2.

References

Suggestions

  • Try to add an actual test using the existing ssh transport to create a connection to a local (and controlled) ssh daemon. This could be very useful when testing a new implementation.

Requirement

  • Needs a feature toggle, and added dependencies are optional (but pulled in by the feature)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions