1

我正在编写 java swing 应用程序。我需要我的应用程序连接到服务器 CentOS 5.5,使用用户名 + *.ppk 文件(我没有密码)。然后,我的应用程序在此服务器上执行一些命令行。

这可能吗 ?哪个图书馆最适合它?

4

4 回答 4

5

有许多库支持您尝试以不同方式实现的目标。如今,通过 Java 连接到 SSH 服务器已经不是什么大事了。

这些是您可能会考虑的一些库:


木卫三

Ganymede 是由苏黎世联邦理工学院的一些学生制作的,效果很好。我个人在一个使用 Java 1.3 的非常旧的机器上运行的项目中使用它。除了 JRE,它不需要任何东西。然而,它不再那么活跃了。有一家公司似乎支持它(Cleondris),但我不知道它们有多可靠。不过没关系,因为它无论如何都是开源的。如果您需要在旧的 java 版本上运行您的应用程序或需要知道您的应用程序在没有 Java 加密扩展 (JCE) 的情况下运行,您可以选择此选项。


JSch

JSch 也是一个成熟的软件,并且可以正常工作。如果你曾经使用过 ant 来完成 SSH/SCP 相关的任务,你可能已经知道了。这总是很麻烦,因为您必须手动将其提供给 ant :-) 该项目维护得很好,看起来并被广泛使用。我在许多现代 UI/Batch 应用程序中使用了它,并且一直对它感到满意。虽然它确实使用了 JCE,但我确实曾经遇到过问题(在较旧的 JRE 上,但仍然如此)。如果您打算将软件分发给您不认识的客户,这可能是个问题。JCE 需要在 JRE 安装本身内安装/配置的东西。可能 99% 的时间都有效,但仍然...


SSH工具

从来没用过这个,但听说好东西。可能值得一试。


使用 Java 将 ppk 转换为 OpenSSH 格式

由于这显然是可能的,这只是实施它的问题。对你来说幸运的是,实际上有多种实现。它甚至可能在建议的 SSH 库之一中实现,但我没有检查。

快速的谷歌搜索向我展示了两个选择:

三铅腻子扩展

在我看来,这是一个非常不错的选择。尽管它是 Trilead SSH 库的扩展(它似乎不再可用),但它的代码并不多,并且可以轻松集成到现有项目中。有一个类可以完成这项工作,并且可以将 ppk 密钥转换为 openssh 密钥。字符串到字符串,所以没有惊喜。真的应该是小菜一碟。

我不知道Trilead怎么了。该公司不再在他们的网站上提及它,但它确实存在于某个时候(http://techtavern.wordpress.com/2008/11/13/about-trilead-ssh-open-source-project/)。

顺便说一句:写它的人也是写詹金斯/哈德森的人。http://kohsuke.org/


“ChillKat”Java 库

嗯......这只是作为一种选择。仅仅为此而下载“多用途”库似乎不值得付出努力和开销。您可以提取相关部分或让自己从中受到启发。也许 trilead 扩展不起作用,你必须选择这个,但我不会认为它是首选。


您当然可以随时手动转换 .ppk 文件,如下所述:http ://www.lmolnar.com/geek/how-to-convert-puttys-private-key-ppk-into-opensshs-private-key- linux格式/

和其他地方,我猜。还有图形工具 puttygen,它包含在 putty-installer 中或可通过 putty 网站 (http://www.chiark.greenend.org.uk/~sgtatham/putty/) 独立下载。

你想知道更多吗?

检查这个: http: //linuxmafia.com/ssh/java.html或写评论。

于 2012-04-26T09:47:17.263 回答
2

如果将 .ppk 转换为不那么专有的格式(即 .pub rsa 或 dsa)是一种选择,请尝试使用putty-工具包。
然后使用SSHTools,一个用于 SSH 的 java API(以及更多)

于 2012-04-26T08:08:43.550 回答
0

一种选择是使用我们 SecureBlackbox 产品的SSHBlackbox包。它支持加载 Putty 密钥和与 SSH 相关的全部功能(SFTP 需要 SFTPBlackbox 包)。SecureBlackbox 附带大量示例和支持。

于 2012-04-26T08:33:12.743 回答
0

当前的 JSch 版本不支持 *.ppk 文件,但 JSch 可以通过 Putty 的 Pageant使用jsch-agent-proxy来使用这些文件。

于 2012-04-26T11:23:59.270 回答