/**
@mainpage
This is the online reference for developing with the libssh library. It
documents the libssh C API and the C++ wrapper.
@section main-linking Linking
We created a small howto how to link libssh against your application, read
@subpage libssh_linking.
@section main-tutorial Tutorial
You should start by reading @subpage libssh_tutorial, then reading the documentation of
the interesting functions as you go.
@section main-features Features
The libssh library provides:
- Full C library functions for manipulating a client-side SSH connection
- SSH2 and SSH1 protocol compliant
- Fully configurable sessions
- Server support
- SSH agent authentication support
- Support for AES-128, AES-192, AES-256, Blowfish, 3DES in CBC mode, and AES in CTR mode
- Supports OpenSSL and GCrypt
- Use multiple SSH connections in a same process, at same time
- Use multiple channels in the same connection
- Thread safety when using different sessions at same time
- POSIX-like SFTP (Secure File Transfer) implementation with openssh extension support
- SCP implementation
- Large file system support (files bigger than 4GB)
- RSA and DSS server public key supported
- Compression support (with zlib)
- Public key (RSA and DSS), password and keyboard-interactive authentication
- Full poll()/WSAPoll() support and a poll-emulation for Win32.
- Runs and tested under x86_64, x86, ARM, Sparc32, PPC under Linux, BSD, MacOSX, Solaris and Windows
@section main-rfc Internet standard
@subsection main-rfc-secsh Secure Shell (SSH)
The following RFC documents described SSH-2 protcol as an Internet standard.
- RFC 4250,
The Secure Shell (SSH) Protocol Assigned Numbers
- RFC 4251,
The Secure Shell (SSH) Protocol Architecture
- RFC 4252,
The Secure Shell (SSH) Authentication Protocol
- RFC 4253,
The Secure Shell (SSH) Transport Layer Protocol
- RFC 4254,
The Secure Shell (SSH) Connection Protocol
- RFC 4255,
Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
- RFC 4256,
Generic Message Exchange Authentication for the Secure Shell Protocol (SSH)
- RFC 4335,
The Secure Shell (SSH) Session Channel Break Extension
- RFC 4344,
The Secure Shell (SSH) Transport Layer Encryption Modes
- RFC 4345,
Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol
It was later modified and expanded by the following RFCs.
- RFC 4419,
Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer
Protocol
- RFC 4432,
RSA Key Exchange for the Secure Shell (SSH) Transport Layer Protocol
- RFC 4462,
Generic Security Service Application Program Interface (GSS-API)
Authentication and Key Exchange for the Secure Shell (SSH) Protocol
- RFC 4716,
The Secure Shell (SSH) Public Key File Format
- RFC 5656,
Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer
@subsection main-rfc-sftp Secure Shell File Transfer Protocol (SFTP)
The protocol is not an Internet standard but it is still widely implemented.
OpenSSH and most other implementation implement Version 3 of the protocol. We
do the same in libssh.
-
draft-ietf-secsh-filexfer-02.txt,
SSH File Transfer Protocol
@subsection main-rfc-extensions Secure Shell Extensions
The OpenSSH project has defined some extensions to the protocol. We support some of
them like the statvfs calls in SFTP or the ssh-agent.
-
OpenSSH's deviations and extensions
-
OpenSSH's ssh-agent
*/