
Pure Java-библиотека SSH-клиента/сервера, реализующая протокол SSH-2 с поддержкой множества шифров, обмена ключами, методов аутентификации, SFTP, SCP и проброса портов для безопасного удалённого доступа.

Apache MINA SSHD — это библиотека на 100% чистой Java, обеспечивающая поддержку протоколов SSH как на стороне клиента, так и на стороне сервера. Она не ставит целью заменить SSH-клиент или SSH-сервер операционных систем Unix, а скорее предоставляет поддержку для приложений на базе Java, которым требуется поддержка SSH.
Библиотека может использовать несколько бэкендов ввода-вывода:
AsynchronousSocketChannel из Java.server-sig-algs.supported - DRAFT 05 - раздел 4.4supported2 - DRAFT 13 - раздел 5.4versions - DRAFT 09 - раздел 4.6vendor-id - DRAFT 09 - раздел 4.4acl-supported - DRAFT 11 - раздел 5.4newline - DRAFT 09 - раздел 4.3md5-hash, md5-hash-handle - DRAFT 09 - раздел 9.1.1check-file-handle, - eddsa), [email protected], [email protected]
, [email protected], [email protected], [email protected]
, [email protected], [email protected], [email protected]Примечание: приведённый выше список содержит все поддерживаемые параметры безопасности в коде. Однако в соответствии с последними рекомендациями в конфигурации клиента и сервера по умолчанию используются только те параметры безопасности, которые в настоящее время считаются безопасными. Пользователи, желающие использовать небезопасные параметры, должны сделать это явно. Следующие параметры устарели и больше не входят в конфигурацию по умолчанию:
Предостережение: согласно RFC 8332 - раздел 3.31
Опыт внедрения показал, что существуют серверы, которые применяют штрафы при аутентификации клиентов, пытающихся использовать алгоритмы открытых ключей, не поддерживаемые SSH-сервером.
При аутентификации с помощью ключа RSA на сервере, который не реализует расширение "server-sig-algs", клиенты МОГУТ по умолчанию использовать подпись "ssh-rsa", чтобы избежать штрафов при аутентификации. Когда новые алгоритмы rsa-sha2-* получат достаточно широкое распространение, чтобы оправдать отключение "ssh-rsa", клиенты МОГУТ по умолчанию использовать один из новых алгоритмов.
Это означает, что пользователи, столкнувшиеся с этой (и связанными с ней) проблемами, должны изменить поддерживаемые параметры безопасности явно, чтобы избежать этой проблемы.
Особое уведомление: ssh-rsa остался в конфигурации по умолчанию, поскольку многие системы и пользователи до сих пор используют его. Однако в будущей версии он будет удалён из конфигурации по умолчанию. Поэтому мы настоятельно рекомендуем пользователям переходить на другие ключи (например, ECDSA, ED25519) как можно скорее.
Отчёты об ошибках, запросы на улучшение или новые функции можно отправлять в систему отслеживания проблем GitHub или в систему отслеживания проблем Apache.
Чувствительные вопросы, такие как уязвимости безопасности, должны сообщаться через приватные каналы, а не через указанные выше системы отслеживания.
Java 8+ (начиная с версии 1.3)
Код требует только базовый модуль slf4j-api. Конкретная реализация API журналирования может быть выбрана из множества существующих адаптеров.
sshd-common - содержит базовые классы, используемые во всём проекте, а также код, не требующий поддержки сети на стороне клиента или сервера.
sshd-core - содержит основной код SSH-клиента/сервера, реализующий соединение, транспорт, каналы, переадресацию и т. д.
sshd-sftp - содержит серверную подсистему SFTP и клиентский код SFTP.
sshd-scp - содержит серверный обработчик команды SCP и клиентский код SCP.
sshd-ldap - содержит серверные аутентификаторы по паролю и открытому ключу, использующие LDAP-сервер.
sshd-git - содержит замены для фабрики SSH-сессий JGit.
sshd-osgi - содержит артефакт, объединяющий sshd-common и sshd-core, чтобы его можно было развертывать в средах OSGi.
sshd-putty - содержит код для разбора файлов ключей PUTTY.
sshd-openpgp - содержит код для разбора файлов ключей OpenPGP (с некоторыми ограничениями - см. соответствующий раздел)
sshd-cli - содержит простые шаблоны для командной строки клиента/сервера - используется для обеспечения внешнего вида и поведения, аналогичного командам Linux ssh/sshd.
sshd-contrib - экспериментальный код, который в настоящее время находится на рассмотрении и может попасть в один из других артефактов (или стать совершенно новым артефактом - например, sshd-putty развился именно так).
С включением тестов
mvn clean install
Без тестов
mvn -Pquick clean install
check-file-namecopy-file, copy-data - DRAFT 00 - разделы 6, 7space-available - DRAFT 09 - раздел 9.2filename-charset, filename-translation-control - DRAFT 13 - раздел 6 - только клиентская сторона