- Key Exchange Methods: curve25519-sha256, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group18-sha512, diffie-hellman-group16-sha512, diffie-hellman-group-exchange-sha256, diffie-hellman-group14-sha1, diffie-hellman-group1-sha1, diffie-hellman-group-exchange-sha1
- Public Key Algorithms: ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, rsa-sha2-512, rsa-sha2-256, ssh-rsa, ssh-dss
- Ciphers: chacha20-poly1305, aes256-gcm@openssh.com, aes128-gcm@openssh.com, aes256-ctr, aes192-ctr, aes128-ctr, aes256-cbc, aes192-cbc, aes128-cbc, 3des-cbc
- Compression Schemes: zlib, zlib@openssh.com, none
- MAC hashes: hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, hmac-sha2-512, hmac-sha2-256, hmac-sha1
- Authentication: none, password, public-key, keyboard-interactive, gssapi-with-mic
- Channels: shell, exec, direct-tcpip, subsystem, auth-agent-req@openssh.com
- Global Requests: tcpip-forward, forwarded-tcpip
- Channel Requests: x11-req, pty-req, window-change, shell, exit-status, signal, break, exit-status, env, exec, exit-signal, keepalive@openssh.com, auth-agent-req@openssh.com
- Subsystems: sftp (version 3 with OpenSSH Extensions)
- SFTP: statvfs@openssh.com, fstatvfs@openssh.com, hardlink@openssh.com, posix-rename@openssh.com, fsync@openssh.com
- Thread-safe: Just don’t share sessions
- Non-blocking: it can be used both blocking and non-blocking
- Your sockets: the app hands over the socket, or uses libssh sockets
- OpenSSL, mbedTLS or gcrypt
- FIPS compatibility
- SmartCard support (through OpenSSL PKCS #11 engine)
Additional Features
- Client and server support
- Supports Linux, UNIX, BSD, Solaris, OS/2 and Windows
- Full API documentation and a tutorial
- Extensive test coverage using Gitlab CI
- Event model based on poll(2), or a poll(2)-emulation.
Other Language Bindings
- Python bindings
- Python bindings by Ansible
- Perl Bindings
- SSH client in R
- Ocaml bindings
- Rust bindings
- Guile bindings
- .NET bindings
- Julia bindings
License explained
libssh is open source licensed under the GNU Library (or: Lesser) General Public License (LGPL). Here are the main features of the LGPL with respect to its use by proprietary, i.e. non-open source products:
- A proprietary product can use libssh (as a library) without having to become open source under the LGPL. This is the main difference to the GPL. So, if you for example use libssh to write an application server, you can sell this product without any restrictions (ship it with libssh included) and you do not have to make your application open source.
- If an application makes modifications to libssh itself and the modified libssh is redistributed with the application, the modified libssh must be distributed under the LGPL. The preferred way is to source the modifications (not the application!) back into libssh, but that is not required. Typically, how this works is that you will contact the libssh project with the modifications for libssh, and we then decide whether to incorporate them or not. For more information on how to contribute, click here.
Authors
libssh is brought to you by Aris Adamantiadis and Andreas Schneider.
The following people also contributed to libssh:
- Jean-Philippe Garcia Ballester
- Nick Zitzmann
- Norbert Kiesel
- Laurent Bigonville
- Jon Simons
- Tilo Eckert
- Jakub Jelen
- Anderson Sasaki
- Dirkjan Bussink
Who uses libssh?
- KDE uses libssh for the sftp file transfers
- GitHub implemented their git ssh server with libssh
- Cockpit an easy-to-use, integrated, glanceable, and open web-based interface for your servers.
- tmate, an instant terminal sharing
- X2Go is a Remote Desktop solution for Linux
- csync a bidirectional file synchronizer
- Remmina the GTK+/Gnome Remote Desktop Client
- XMBC a media player and entertainment hub for digital media
- GNU Gatekeeper a full featured H.323 gatekeeper
- QEMU ssh block driver uses libssh
- NBDkit is a toolkit for creating NBD servers.