私はJavaスイングアプリを書いています。ユーザー名+*.ppkファイルを使用してアプリをサーバーCentOS5.5に接続する必要があります(パスワードはありません)。次に、私のアプリはこのサーバーでコマンドラインを実行します。
これは可能ですか?どのライブラリがそれに最適ですか?
さまざまな方法で達成しようとしているものをサポートするライブラリが多数あります。Java 経由で SSH サーバーに接続することは、最近では大したことではなくなりました。
これらは、検討する可能性のあるいくつかのライブラリです。
Ganymede は、ETH チューリッヒの何人かの学生によって作成され、非常にうまく機能します。私は、Java 1.3 を使用する非常に古いマシンで実行されるプロジェクトで個人的に使用しています。JRE以外は何も必要ありません。しかし、それはもはやあまり活発ではありません。それをサポートしているように見える会社(Cleondris)がありますが、それらがどれほど信頼できるかはわかりません. とにかくオープンソースなので、大した問題ではありません。アプリを古い Java バージョンで実行する必要がある場合、またはアプリが Java Cryptography Extension (JCE) なしで実行されることを知る必要がある場合は、これを選択できます。
JSch も成熟したソフトウェアであり、問題なく動作します。ant を使用して SSH/SCP 関連のタスクを実行したことがある場合は、おそらく既にそれを知っているでしょう。手動で ant に提供する必要があるため、常に面倒です :-) プロジェクトはよく維持されており、広く使用されているようです。多くの最新の UI/バッチ アプリケーションで使用しており、常に満足しています。それはJCEを使用しますが、私はかつてそれで問題を経験しました(古いJREでは、まだです)。ソフトウェアを未知のクライアントに配布する予定がある場合、これは問題になる可能性があります。JCE は、JRE インストール自体の内部にインストール/構成されたものを必要とします。おそらく 99% の確率で動作しますが、それでも...
これを使用したことはありませんが、良いことを聞きました。試してみる価値があるかもしれません。
これは明らかに可能であるため、それを実装するだけの問題です。幸いなことに、実際には複数の実装があります。提案された SSH ライブラリの 1 つに実装されている可能性もありますが、私は確認しませんでした。
Google で簡単に検索すると、次の 2 つの選択肢が見つかりました。
私にはとても良い選択のように思えます。これは Trilead SSH ライブラリ (もう利用できないようです) の拡張ですが、それほど多くのコードではなく、既存のプロジェクトに簡単に統合できます。作業を行い、ppk キーを openssh キーに変換できるクラスが 1 つあります。文字列から文字列への変換なので、驚くことはありません。本当に簡単なはずです。
トライリードがどうなったかはわかりません。同社の Web サイトではもう言及されていませんが、ある時点では確かに存在していました (http://techtavern.wordpress.com/2008/11/13/about-trilead-ssh-open-source-project/)。
ところで、これを書いたのは Jenkins/Hudson も書いた人です。http://kohsuke.org/
うーん...これは単なる代替手段です。そのためだけに「多目的」ライブラリをダウンロードするための労力とオーバーヘッドの価値はないようです。関連する部分を抽出したり、そこからインスピレーションを得たりすることもできます。多分 trilead 拡張機能が機能せず、これを選択する必要がありますが、私はそれを最初の選択肢とは考えていません.
もちろん、ここで説明されているように、いつでも .ppk ファイルを手動で変換できます。 Linuxでフォーマット/
そして、他の場所だと思います。グラフィカル ツール puttygen もあります。これは、putty-installer に含まれているか、または putty Web サイト (http://www.chiark.greenend.org.uk/~sgtatham/putty/) からスタンドアロンでダウンロードできます。
もっと知りたいですか?
これを確認してください: http://linuxmafia.com/ssh/java.htmlまたはコメントを書いてください。
.ppk をあまり独自でない形式 (つまり、.pub rsa または dsa) に変換することがオプションである場合は、putty-ツールパッケージ。
次に、SSH 用の Java API であるSSHTools (およびその他) を使用します。
現在の JSch バージョンは *.ppk ファイルをサポートしていませんが、JSch はPutty の Pageant 経由で jsch-agent-proxyを使用してこれらのファイルを使用できます。
オプションの 1 つは、SecureBlackbox 製品のSSHBlackboxパッケージを使用することです。Putty キーの読み込みと SSH 関連機能の全範囲をサポートします (SFTP には SFTPBlackbox パッケージが必要です)。SecureBlackbox には、豊富なサンプルとサポートが付属しています。