Skip to content
This repository


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

branch: master
Octocat-spinner-32 build add the CPackConfig file back June 23, 2012
Octocat-spinner-32 cmake cmake: Define BSD. January 24, 2011
Octocat-spinner-32 doc doc: Use fwrite for the command example. February 08, 2011
Octocat-spinner-32 examples example: Use const in auth_password from samplesshd. March 10, 2011
Octocat-spinner-32 include privatekey_dup() for ssh_bind_accept to hand off keys to session objects March 16, 2011
Octocat-spinner-32 src dups keys properly March 27, 2011
Octocat-spinner-32 tests misc: Fixed ssh_is_ipaddr_v4() on Windows. February 13, 2011
Octocat-spinner-32 .clang_complete vim: Added .clang_complete file. February 07, 2011
Octocat-spinner-32 .gitignore privatekey_dup() for ssh_bind_accept to hand off keys to session objects March 16, 2011
Octocat-spinner-32 AUTHORS updated changelog + authors May 18, 2009
Octocat-spinner-32 BSD added a file from openssh needed for known host parsing November 02, 2008
Octocat-spinner-32 CMakeLists.txt build: Set version to 0.5.90. March 01, 2011
Octocat-spinner-32 COPYING legal paperwork to be 100% respectful of LGPL, about openssl's June 16, 2008
Octocat-spinner-32 CTestConfig.cmake ctest: Set the memcheck suppression file correctly. December 19, 2010
Octocat-spinner-32 ChangeLog build: Updated the ChangeLog. February 07, 2011
Octocat-spinner-32 ConfigureChecks.cmake examples: Added a event context based sshd example. February 20, 2011
Octocat-spinner-32 DefineOptions.cmake Set variables in the good order December 28, 2010
Octocat-spinner-32 INSTALL doc: Added samplessh hint to INSTALL. December 21, 2010
Octocat-spinner-32 README doc: Update README. December 21, 2010
Octocat-spinner-32 config.h.cmake server: Replace gethostbyname() with getaddrinfo(). December 27, 2010
Octocat-spinner-32 libssh.pc.cmake Add pkg-config file libssh.pc December 30, 2009
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.