プロジェクト

全般

プロフィール

Java SSH ライブラリ

はじめに

Javaで、SSH(Secure Shell)を扱うライブラリについてのメモです。
SSHは、ネットワーク上のコンピュータに対してリモートから安全にコマンド環境(シェル環境)やファイル転送を実現する技術です。パスワード認証、公開鍵認証の提供、通信データの暗号化により、オープンなネットワーク上に安全な接続を確立します。

Javaでは、標準でSSHをサポートするAPIを提供していないので、サードパーティ製ライブラリを利用することが多いです。

SSHを提供するライブラリ

インターネットで公開されているSSHライブラリの情報を整理します。

ライブラリ一覧

No Name License Developer Latest Version
1 Maverick Synergy Java SSH API Dual license of LGPLv3 and commercial JADAPTIVE Limited 3.0.10@2023-04-25
2 Apache Mina SSHD Apache 2.0 Apache MINA Project 2.11.0@2023-10-20
3 Ganymed SSH-2 for Java BSD 3 Clause ETH Zurich -> Software AG 263@2020-07-21
4 JSch BSD 3 Clause JCraft 0.1.55@2018-11-22
5 IPWorks SSH Commercial /n software 22.0.8669@2023-09-26
6 sshj Apache 2.0 Jeroen van Erp 0.37.0@2023-10-11

Maverick Synergy Java SSH API

  • オープンソースソフトウェアで、LGPL v3と商用ライセンスのデュアルライセンスで提供されます。
  • SSHクライアント用APIとSSHサーバー用APIのライブラリが分離して提供されています。
  • java.nioライブラリを使った実装となっており、パフォーマンス向上を図っています。
  • ドキュメントも充実しています。
    https://jadaptive.com/app/manpage/en/category/1559751

Apache MINA SSHD

  • オープンソースソフトウェアで、Apache License 2.0ライセンスで提供されています。
  • SSHクライアント・サーバー用のAPIライブラリです。
  • slf4j-apiを使用しています(依存性あり)。
  • java.nioライブラリを使った実装です。
  • APIはAutoClosable実装なので try with resources構文が使えます。
  • ドキュメントは、githubのページに記載あります。
    https://github.com/apache/mina-sshd

Ganymede SSH-2 for Java

  • スイス連邦工科大学チューリッヒ校(ETH Zurich)のIKSグループで開発、ETH Zurichがメンテナンスを中止して以降はフォークが作られ、現在はSoftware AG社のオープンソース取り組みの一つとしてメンテナンスされています。

JSch

  • BSD 3 Clause ライセンスで提供されています。
  • ソースコードは公開されていますが、JCraft社で開発・メンテナンスされています(≠オープンソースプロジェクト)。

IPWorks SSH

  • 商用製品で、開発者1人 $1,249(配布は自由)

sshj

  • オープンソースソフトウェアで、Apache 2.0ライセンスで提供されています。
  • バイナリは、Maven Centralリポジトリから入手します。

プログラミング

Maverick Synergy Java SSH API

Java SSH Client - Maverick Synergy

参考文献・記事

ブログ等

  • SSH Connection With Java - Baldung
    JschとApache MINA SSHDで、sshリモートコマンド実行の簡単なサンプルコードを紹介。どちらもInputStreamでコマンド文字列を送り、OutputStreamでコマンド実行結果の文字列を受け取る例です。違いについても言及あります。(Jschはコマンド実行結果のみ取得、MINA SSHDはコマンド実行時のコンソール出力も含めて取得とのこと)


5ヶ月前に更新