Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
mulitplatform C library implementing the SSHv2 and SSHv1 protocol on client and server side
C C++ Other
branch: master
Failed to load latest commit information.
build add the CPackConfig file back
doc doc: Use fwrite for the command example.
examples example: Use const in auth_password from samplesshd.
include privatekey_dup() for ssh_bind_accept to hand off keys to session objects
src dups keys properly
tests misc: Fixed ssh_is_ipaddr_v4() on Windows.
.clang_complete vim: Added .clang_complete file.
.gitignore privatekey_dup() for ssh_bind_accept to hand off keys to session objects
AUTHORS updated changelog + authors
BSD added a file from openssh needed for known host parsing
CMakeLists.txt build: Set version to 0.5.90.
CTestConfig.cmake ctest: Set the memcheck suppression file correctly.
ChangeLog build: Updated the ChangeLog.
ConfigureChecks.cmake examples: Added a event context based sshd example.
DefineOptions.cmake Set variables in the good order
README doc: Update README.
config.h.cmake server: Replace gethostbyname() with getaddrinfo().
libssh.pc.cmake Add pkg-config file libssh.pc


libssh: the SSH library

1* Why ?

Why not ? :) I've began to work on my own implementation of the ssh protocol
because i didn't like the currently public ones.
Not any allowed you to import and use the functions as a powerful library, 
and so i worked on a library-based SSH implementation which was non-existing
in the free and open source software world.

2* How/Who ?

If you downloaded this file, you must know what it is : a library for
accessing ssh client services through C libraries calls in a simple manner.
Everybody can use this software under the terms of the LGPL - see the COPYING

If you ask yourself how to compile libssh, please read INSTALL before anything.

3* Where ?

4* API Changes !

Changes between 0.4 and 0.5

We use the ssh_ prefix as namespace for every function now. There is a legacy.h
which could be used to get the old function names.

Changes between 0.3 and 0.4

We changed libssh to be typesafe now:

SSH_SESSION *session -> ssh_session session
SFTP_SESSION *sftp -> sftp_session sftp
CHANNEL *channel -> ssh_channel channel
STRING *string -> ssh_string string

The options structure has been removed and there is a new function. This
function can set all available options now. You can find the enum in the
header file and it is documented. Example:

ssh_options_set(session, SSH_OPTIONS_HOST, "localhost");

5* Copyright policy

The developers of libssh have a policy of asking for contributions to be made
under the personal copyright of the contributor, instead of a corporate

There are some reasons for the establishment of this policy:

    * Individual copyrights make copyright registration in the US a simpler
    * If libssh is copyrighted by individuals rather than corporations,
      decisions regarding enforcement and protection of copyright will, more
      likely, be made in the interests of the project, and not in the interests
      of any corporation’s shareholders.
    * If we ever need to relicense a portion of the code contacting individuals
      for permission to do so is much easier than contacting a company.
Something went wrong with that request. Please try again.