
Reine Java SSH-Client/Server-Bibliothek, die das SSH-2-Protokoll implementiert und mehrere Verschlüsselungsverfahren, Schlüsselaustausche, Authentifizierungsmethoden, SFTP, SCP sowie Portweiterleitung für sicheren Fernzugriff unterstützt.

Apache MINA SSHD ist eine zu 100% reine Java-Bibliothek zur Unterstützung der SSH-Protokolle sowohl auf Client- als auch auf Serverseite. Sie ist nicht als Ersatz für den SSH-Client oder SSH-Server von Unix-Betriebssystemen gedacht, sondern bietet Unterstützung für Java-basierte Anwendungen, die SSH benötigen.
Die Bibliothek kann mehrere I/O-Backends nutzen:
AsynchronousSocketChannels von Java.server-sig-algs-Erweiterungen bereit.supported - DRAFT 05 - section 4.4supported2 - DRAFT 13 section 5.4versions - DRAFT 09 Section 4.6vendor-id - DRAFT 09 - section 4.4acl-supported - DRAFT 11 - section 5.4newline - DRAFT 09 Section 4.3md5-hash, md5-hash-handle - DRAFT 09 - section 9.1.1check-file-handle, - eddsa), [email protected], [email protected]
, [email protected], [email protected], [email protected]
, [email protected], [email protected], [email protected]Hinweis: Die obige Liste enthält alle im Code unterstützten Sicherheitseinstellungen. In Übereinstimmung mit den neuesten Empfehlungen enthält die Standard-Client-/Server-Konfiguration jedoch nur die Sicherheitseinstellungen, die derzeit als sicher gelten. Benutzer, die die unsicheren Einstellungen einbeziehen möchten, müssen dies explizit tun. Die folgenden Einstellungen wurden als veraltet eingestuft und sind nicht mehr in der Standardkonfiguration enthalten:
Einschränkung: Gemäß RFC 8332 - Abschnitt 3.31
Die Implementierungserfahrung hat gezeigt, dass es Server gibt, die Authentifizierungsstrafen für Clients verhängen, die Public-Key-Algorithmen verwenden, die der SSH-Server nicht unterstützt.
Bei der Authentifizierung mit einem RSA-Schlüssel gegenüber einem Server, der die Erweiterung "server-sig-algs" nicht implementiert, können Clients standardmäßig eine "ssh-rsa"-Signatur verwenden, um Authentifizierungsstrafen zu vermeiden. Wenn die neuen rsa-sha2-* Algorithmen weit genug verbreitet sind, um die Deaktivierung von "ssh-rsa" zu rechtfertigen, können Clients standardmäßig einen der neuen Algorithmen verwenden.
Das bedeutet, dass Benutzer, die auf dieses (und verwandte) Probleme stoßen, die unterstützten Sicherheitseinstellungen explizit ändern müssen, um das Problem zu vermeiden.
Besonderer Hinweis: ssh-rsa wurde als Teil der Standardkonfiguration beibehalten, da es immer noch viele Systeme/Benutzer gibt,
die es verwenden. In einer zukünftigen Version wird es jedoch aus dem Standard entfernt. Wir empfehlen daher dringend, so bald wie möglich
auf andere Schlüssel (z. B. ECDSA, ED25519) umzusteigen.
Fehlerberichte sowie Verbesserungs- oder Funktionsanfragen können im GitHub Issue Tracker oder im Apache Issue Tracker eingereicht werden.
Sensible Probleme wie Sicherheitslücken müssen über private Kanäle gemeldet werden, nicht über einen der Issue-Tracker.
Java 8+ (ab Version 1.3)
Der Code benötigt nur das abstrakte Kernmodul slf4j-api. Die tatsächliche Implementierung der Protokollierungs-API kann aus den vielen vorhandenen Adaptern ausgewählt werden.
sshd-common - enthält grundlegende Klassen, die im gesamten Projekt verwendet werden, sowie Code, der keine Client- oder Server-Netzwerkunterstützung benötigt.
sshd-core - enthält den grundlegenden SSH-Client-/Server-Code, der Verbindung, Transport, Kanäle, Weiterleitung usw. implementiert.
sshd-sftp - enthält das serverseitige SFTP-Subsystem und den SFTP-Client-Code.
sshd-scp - enthält den serverseitigen SCP-Befehlshandler und den SCP-Client-Code.
sshd-ldap - enthält serverseitige Passwort- und Public-Key-Authentifikatoren, die einen LDAP-Server verwenden.
sshd-git - enthält Ersatz für die JGit-SSH-Session-Factory.
sshd-osgi - enthält ein Artefakt, das sshd-common und sshd-core kombiniert, sodass es in OSGi-Umgebungen bereitgestellt werden kann.
sshd-putty - enthält Code zum Parsen von PUTTY-Schlüsseldateien.
sshd-openpgp - enthält Code zum Parsen von OpenPGP-Schlüsseldateien (mit einigen Einschränkungen - siehe entsprechender Abschnitt)
sshd-cli - enthält einfache Vorlagen für kommandozeilenbasierte Clients/Server - dient dazu, ein ähnliches Erscheinungsbild wie die Linux-Befehle ssh/sshd zu bieten.
sshd-contrib - experimenteller Code, der derzeit geprüft wird und möglicherweise in eines der anderen Artefakte aufgenommen wird (oder ein völlig neues Artefakt wird - z. B. ist sshd-putty auf diese Weise entstanden).
Einschließlich Tests:
mvn clean install
Ohne Tests:
mvn -Pquick clean install
check-file-namecopy-file, copy-data - DRAFT 00 - sections 6, 7space-available - DRAFT 09 - section 9.2filename-charset, filename-translation-control - DRAFT 13 - section 6 - nur Client-Seite