libssh  0.8.90
The SSH library
The Tutorial


libssh is a C library that enables you to write a program that uses the SSH protocol. With it, you can remotely execute programs, transfer files, or use a secure and transparent tunnel for your remote programs. The SSH protocol is encrypted, ensures data integrity, and provides strong means of authenticating both the server of the client. The library hides a lot of technical details from the SSH protocol, but this does not mean that you should not try to know about and understand these details.

libssh is a Free Software / Open Source project. The libssh library is distributed under LGPL license. The libssh project has nothing to do with "libssh2", which is a completely different and independent project.

libssh can run on top of either libgcrypt or libcrypto, two general-purpose cryptographic libraries.

This tutorial concentrates for its main part on the "client" side of libssh. To learn how to accept incoming SSH connections (how to write a SSH server), you'll have to jump to the end of this document.

This tutorial describes libssh version 0.5.0. This version is a little different from the 0.4.X series. However, the examples should work with little changes on versions like 0.4.2 and later.

Table of contents:

Chapter 1: A typical SSH session

Chapter 2: A deeper insight on authentication

Chapter 3: Opening a remote shell

Chapter 4: Passing a remote command

Chapter 5: The SFTP subsystem

Chapter 6: The SCP subsystem

Chapter 7: Forwarding connections (tunnel)

Chapter 8: Threads with libssh

To be done