最近、仕事でJavaからSSHを使用することが多いのですが、ちょっとどんなライブラリがあるか調べることになりまして…せっかくなので、結果をまとめてみることにしました。
割と有名どころが多いので、知っている方はそれほど大した情報にはならないと思いますが…。
では、いってみましょう。
JSch
これが1番有名なライブラリではないでしょうか?妙にバージョンが低い割には、Ant、Eclipse CVSプラグイン、Maven Wagonなどで利用されているようです。
名前 | JSch |
プロトコルバージョン | SSH v2 |
最新バージョン(2012/08/18時点) | 0.1.48 |
利用可能な主な機能 | SSH、SFTP、SCP(リモートコマンド実行の限定サポート)、公開鍵認証 |
プロジェクトサイト | http://www.jcraft.com/jsch/ |
Maven Central Repositoryへの登録 | 登録済 |
欠点は、SCPのサポートが薄いことと、ドキュメントがほぼ皆無なことでしょうか…。
Ganymed SSH-2 for Java
JavaでSSH関連の調べ物をしていると、JSchの次に目につくライブラリです。
名前 | Ganymed SSH-2 for Java |
プロトコルバージョン | SSH v2 |
最新バージョン(2012/08/18時点) | build250 |
利用可能な主な機能 | SSH、SFTP、SCP、公開鍵認証 |
プロジェクトサイト | http://www.cleondris.ch/opensource/ssh2/ |
プロジェクトサイト(旧) | http://www.ganymed.ethz.ch/ssh2/ |
Maven Central Repositoryへの登録 | 登録済(ただし、旧サイトでのbuild210まで) |
SCPがJSchより簡単に使えるので、JavaでSCPを使いたい場合はこちら?
ただ、メンテナンス状況が変わったようで、Orion SSH2にフォークされたり、Maven Central Repositoryへは最新版は登録されていないので、今後の扱いは?ですね。
sshj
Stack Overflowのスレッドで見つけました。
http://stackoverflow.com/questions/5097514/jsch-or-sshj-or-ganymed-ssh-2
http://stackoverflow.com/questions/995944/ssh-library-for-java
割と新鋭?
名前 | sshj |
プロトコルバージョン | SSH v2 |
最新バージョン(2012/08/18時点) | 0.8.1 |
利用可能な主な機能 | SSH、SFTP、SCP、公開鍵認証 |
プロジェクトサイト | https://github.com/shikhar/sshj |
Maven Central Repositoryへの登録 | 登録済 |
欠点は、やっぱりドキュメントに乏しいところでしょうか…。
Apache MINA SSHD
Apache MINAによるSSHDの実装のようです。他のライブラリと異なり、クライアント側だけではなくてサーバの実装も持ちます。
名前 | Apache MINA SSHD |
プロトコルバージョン | SSH v2 |
最新バージョン(2012/08/18時点) | 0.7.0 |
利用可能な主な機能 | SSH、SFTP、SCP、公開鍵認証 |
プロジェクトサイト | http://mina.apache.org/sshd/ |
Maven Central Repositoryへの登録 | 未登録 |
サーバ側の実装を含むので少々大掛かりなことと、やっぱりドキュメントには乏しい感じですね。
SSHTools J2SSH
Apache MINA SSHDと同様、サーバを含む実装になります。でも、こちらの方が古株っぽいですね。
名前 | SSHTools J2SSH |
プロトコルバージョン | SSH v2 |
最新バージョン(2012/08/18時点) | 0.2.9 |
利用可能な主な機能 | SSH、SFTP、公開鍵認証 |
プロジェクトサイト | http://sourceforge.net/projects/sshtools/ |
Maven Central Repositoryへの登録 | 登録済 |
ドキュメントがオンラインで見られないとは…。
Orion SSH2
Ganymed SSH-2 for Javaを元にした、SSHの実装のようです。2006年にGanymed SSH-2 for Javaのメンテナンスが止まってしまったのを機にできたようですね。
名前 | Orion SSH2 |
プロトコルバージョン | SSH v2 |
最新バージョン(2012/08/18時点) | build214 |
利用可能な主な機能 | SSH、SFTP、SCP、公開鍵認証 |
プロジェクトサイト | http://sourceforge.net/apps/mediawiki/orion-ssh2/index.php?title=Main_Page |
Maven Central Repositoryへの登録 | 未登録 |
Hudsonでも使われているとプロジェクトサイトには書かれていましたけど、なんでMaven Central Repositoryには未登録なんでしょうね?
commons-ssh
commons-sshは、他のライブラリとは違い、上記までに出てきた(Orion SSH2は除く)SSHライブラリのブリッジとなるライブラリです。
SSHTools J2SSH、JSch、Ganymed SSH-2 for Java、Apache MINA SSHDのいずれかのインスタンスを指定して、接続を作成するようです。
名前 | commons-ssh |
プロトコルバージョン | SSH v2 |
最新バージョン(2012/08/18時点) | 1.4.1 |
利用可能な主な機能 | SSH、SFTP、公開鍵認証 |
プロジェクトサイト | http://commons-ssh.sourceforge.net/ |
Maven Central Repositoryへの登録 | 未登録 |
どうもSCPは使えないような?JSchのように、コマンド実行してくれってことなのでしょうか?
JSSH
今回載せたライブラリで、唯一SSH v1系のライブラリです。
名前 | JSSH |
プロトコルバージョン | SSH v1.5 |
最新バージョン(2012/08/18時点) | 0.9.5 |
利用可能な主な機能 | SSH、公開鍵認証 |
プロジェクトサイト | http://www.pitman.co.za/projects/jssh/index.html |
Maven Central Repositoryへの登録 | 未登録 |
ドキュメント皆無、ビルドも自分でしなくちゃいけない感じです。最終更新が2002年なので、もう止まってしまったプロジェクトなんでしょうね。
なお、自分が今回SSHのライブラリを調べていたのは、最初に書いたように仕事で使用するからなのですが、その時に使用するSSHのバージョンが1なんですよね。んで、結果、上記の様にSSH v1をサポートするライブラリはほぼない感じです。JSSHは、ドキュメントがなさ過ぎて、すごい困るんですけど…。
あ、商用を含めると、存在するようですよ。
J2SSH Maverick
https://www.javassh.com/products/j2ssh-maverick
- バージョン低い
- ドキュメント少なし
ってのが共通ですね。あんまりJavaでやろうという需要はないのかなぁ?