A Go library providing a simple implementation of SSH protocol features including proxy command support.
easyssh-proxy is a Go library that provides a simple, programmatic interface for SSH client operations. It allows developers to execute remote commands, transfer files via SCP, and manage SSH connections, including support for proxy commands to traverse through jump hosts. It solves the problem of automating secure shell interactions within Go applications without dealing with low-level SSH protocol details.
Go developers and DevOps engineers who need to automate remote server management, execute commands on multiple servers, or handle file transfers in their applications.
Developers choose easyssh-proxy for its clean API, built-in proxy command support for complex network topologies, and flexibility in authentication methods, making it a more accessible alternative to using lower-level SSH libraries directly.
easyssh-proxy provides a simple implementation of some SSH protocol features in Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables SSH connections through jump hosts or firewalls via the Proxy field in MakeConfig, as shown in the examples for traversing complex network topologies without manual SSH configs.
Supports private keys as plain text or file paths, passwords, and passphrases, allowing diverse secure login options without extra dependencies, detailed in the MakeConfig properties.
Provides the Stream method for live stdout and stderr output via channels, useful for monitoring long-running commands, demonstrated in the stream example with timeout handling.
Offers fine-grained control with timeouts, TCP protocol selection, cipher suites, and fingerprint verification, including legacy system support via UseInsecureCipher.
Limited to SCP for file transfers, which may not suit applications needing SFTP features like directory listings or advanced file management, as admitted by the lack of SFTP methods in the README.
Proxy settings are not inherited from the main configuration, requiring explicit duplication for each hop, increasing setup complexity and potential errors, as noted in the SSH ProxyCommand section.
Missing common SSH capabilities like port forwarding, session multiplexing, or interactive shells, focusing only on basic executions and transfers, which may necessitate workarounds for complex use cases.