6bf8983368
Tested: - Windows: - Visual C++ 2005/2008/2010/2012/2013/MinGW-w64 - static/shared - 32/64-bit - OpenSSL/WinCNG - Without zlib - Linux: - GCC 4.6.3/Clang 3.4 - static/shared - 32/64-bit - OpenSSL/Libgcrypt - With/Without zlib - MacOS X - AppleClang 6.0.0 - static - 64-bit - OpenSSL - Without zlib Conflicts: README
174 lines
5.6 KiB
Plaintext
174 lines
5.6 KiB
Plaintext
License: see COPYING
|
|
|
|
Source code: https://github.com/libssh2/libssh2
|
|
|
|
Web site source code: https://github.com/libssh2/www
|
|
|
|
Installation instructions are in docs/INSTALL
|
|
=======
|
|
To build libssh2 you will need CMake v2.8 or later [1] and one of the
|
|
following cryptography libraries:
|
|
|
|
* OpenSSL
|
|
* Libgcrypt
|
|
* WinCNG
|
|
|
|
Getting started
|
|
---------------
|
|
|
|
If you are happy with the default options, make a new build directory,
|
|
change to it, configure the build environment and build the project:
|
|
|
|
mkdir bin
|
|
cd bin
|
|
cmake ..
|
|
cmake --build .
|
|
|
|
libssh2 will be built as a static library and will use any
|
|
cryptography library available. The library binary will be put in
|
|
`bin/src`, with the examples in `bin/example` and the tests in
|
|
`bin/tests`.
|
|
|
|
Customising the build
|
|
---------------------
|
|
|
|
Of course, you might want to customise the build options. You can
|
|
pass the options to CMake on the command line:
|
|
|
|
cmake -D<option>=<value> ..
|
|
|
|
The following options are available:
|
|
|
|
* `BUILD_SHARED_LIBS=OFF`
|
|
|
|
Determines whether libssh2 is built as a static library or as a
|
|
shared library (.dll/.so). Can be `ON` or `OFF`.
|
|
|
|
* `CRYPTO_BACKEND=`
|
|
|
|
Chooses a specific cryptography library to use for cryptographic
|
|
operations. Can be `OpenSSL` (http://www.openssl.org),
|
|
`Libgcrypt` (http://www.gnupg.org/), `WinCNG` (Windows Vista+) or
|
|
blank to use any library available.
|
|
|
|
CMake will attempt to locate the libraries automatically. See [2]
|
|
for more information.
|
|
|
|
* `ENABLE_ZLIB_COMPRESSION=OFF`
|
|
|
|
Will use zlib (http://www.zlib.org) for payload compression. Can
|
|
be `ON` or `OFF`.
|
|
|
|
* `ENABLE_CRYPT_NONE=OFF`
|
|
|
|
The SSH2 Transport allows for unencrypted data transmission using
|
|
the "none" cipher. Because this is such a huge security hole, it
|
|
is typically disabled on SSH2 implementations and is disabled in
|
|
libssh2 by default as well.
|
|
|
|
Enabling this option will allow for "none" as a negotiable method,
|
|
however it still requires that the method be advertized by the
|
|
remote end and that no more-preferable methods are available.
|
|
|
|
* `ENABLE_MAC_NONE=OFF`
|
|
|
|
The SSH2 Transport also allows implementations to forego a message
|
|
authentication code. While this is less of a security risk than
|
|
using a "none" cipher, it is still not recommended as disabling
|
|
MAC hashes removes a layer of security.
|
|
|
|
Enabling this option will allow for "none" as a negotiable method,
|
|
however it still requires that the method be advertized by the
|
|
remote end and that no more-preferable methods are available.
|
|
|
|
* `ENABLE_GEX_NEW=ON`
|
|
|
|
The diffie-hellman-group-exchange-sha1 (dh-gex) key exchange
|
|
method originally defined an exchange negotiation using packet
|
|
type 30 to request a generation pair based on a single target
|
|
value. Later refinement of dh-gex provided for range and target
|
|
values. By default libssh2 will use the newer range method.
|
|
|
|
If you experience trouble connecting to an old SSH server using
|
|
dh-gex, try this option to fallback on the older more reliable
|
|
method.
|
|
|
|
* `ENABLE_DEBUG_LOGGING=ON` in Debug, `=OFF` in Release
|
|
|
|
Will enable the libssh2_trace() function for showing debug traces.
|
|
|
|
Build tools
|
|
-----------
|
|
|
|
The previous examples used CMake to start the build using:
|
|
|
|
cmake --build .
|
|
|
|
Alternatively, once CMake has configured your project, you can just
|
|
use your own build tool, e.g GNU make, Visual Studio, etc., from that
|
|
point onwards.
|
|
|
|
Tests
|
|
-----
|
|
|
|
To test the build, run the appropriate test target for your build
|
|
system. For example:
|
|
|
|
cmake --build . --target test
|
|
or
|
|
cmake --build . --target RUN_TESTS
|
|
|
|
How do I use libssh2 in my project if my project doesn't use CMake?
|
|
-------------------------------------------------------------------
|
|
|
|
If you are not using CMake for your own project, install libssh2
|
|
|
|
cmake <libssh2 source location>
|
|
cmake --build .
|
|
cmake --build . --target install
|
|
or
|
|
cmake --build . --target INSTALL
|
|
|
|
and then specify the install location to your project in the normal
|
|
way for your build environment. If you don't like the default install
|
|
location, add `-DCMAKE_INSTALL_PREFIX=<chosen prefix>` when initially
|
|
configuring the project.
|
|
|
|
How can I use libssh2 in my project if it also uses CMake?
|
|
----------------------------------------------------------
|
|
|
|
If your own project also uses CMake, you don't need to worry about
|
|
setting it up with libssh2's location. Just add just the following
|
|
lines and CMake will find libssh2 on your system, set up the necessary
|
|
paths and link the library with your binary.
|
|
|
|
find_package(Libssh2 REQUIRED CONFIG)
|
|
target_link_libraries(my_project_target Libssh2::libssh2)
|
|
|
|
Of course, you still have to make libssh2 available on your system
|
|
first. You can install it in the traditional way shown above, but you
|
|
don't have to. Instead you can just build it, which will export its
|
|
location to the user package registry [3] where `find_package` will
|
|
find it.
|
|
|
|
You can even combine the two steps using a so-called 'superbuild'
|
|
project [4] that downloads, builds and exports libssh2, and then
|
|
builds your project:
|
|
|
|
include(ExternalProject)
|
|
|
|
ExternalProject_Add(
|
|
Libssh2
|
|
URL <libssh2 download location>
|
|
URL_HASH SHA1=<libssh2 archive SHA1>
|
|
INSTALL_COMMAND "")
|
|
|
|
ExternalProject_Add(
|
|
MyProject DEPENDS Libssh2
|
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
INSTALL_COMMAND "")
|
|
|
|
[1] http://www.cmake.org/cmake/resources/software.html
|
|
[2] http://www.cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html
|
|
[3] http://www.cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html#package-registry
|
|
[4] http://www.kitware.com/media/html/BuildingExternalProjectsWithCMake2.8.html |