После двух с половиной лет разработки увидел свет релиз библиотеки libssh 0.6.0, предназначенной для интеграции поддержки SSH в программы на языке Си. Библиотека позволяет выполнять программы на удаленном сервере, копировать файлы через защищенное соединение, обеспечивать работу приложения в роли SSH-сервера. Поддерживаются такие механизмы, как scp и sftp. Исходные тексты библиотеки распространяются под лицензией LGPL.
Основные новшества:
- Новый серверный API на основе callback-вызовов;
- Поддержка алгоритма формирования цифровых подписей ECDSA (Elliptic Curve Digital Signature Algorithm) при сборке с OpenSSL и методов обмена ключами [email protected].
- Новый API для управления открытыми ключами;
- Поддержка GSSAPI (Kerberos), протестированная с FreeIPA и gssproxy. Для управления добавлены опции GSSAPIServerIdentity, GSSAPIClientIdentity, GSSAPIDelegateCredentials;
- Новый API для аутентификации пользователей.
- Новые функции ssh_get_publickey_hash() и ssh_get_poll_flags();
- Поддержка алгоритма ECDH (Elliptic Curve Diffie Hellman);
- Расширены возможности системы ведения логов;
- Поддержка перенаправления SSH-agent;
- Поддержка инициированая повторного обмена ключами (key-reexchange).
- Расширено число unit-тестов.
Особенности Libssh (не путать с проектом libssh2, который близок по функциональности, но распространяется в рамках лицензии BSD):
- Поддержка серверных и клиентских функций;
- Поддержка режимов шифрования AES-128, AES-192, AES-256, Blowfish, 3DES в CBC, AES в режиме CTR, ECDH (Elliptic Curve Diffie Hellman);
- Поддержка протоколов SSH1 и SSH2;
- Поддержка расширений протокола, специфичных для OpenSSH;
- Возможность работы с серверами публичных ключей RSA и DSS;
- Поддержка Kerberos (GSSAPI);
- Поддержка сжатия данных;
- Работа совместно с ssh-agent и возможность организации работы нескольких сеансов в рамках одного соединения;
- Поддержка сборка с использованием внешних библиотек libcrypto (из OpenSSL) и libgcrypt (GCrypt).