使用*.ppk通过Java连接SSH(运行命令行)

1 java ssh

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

这可能吗 ?什么图书馆最适合它?

Dar*_*iop 5

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

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


木卫三

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


JSch

JSch也是一个成熟的软件,只是有效.如果您曾经使用过ant进行SSH/SCP相关任务,那么您可能已经知道了.这总是很麻烦,因为你必须手动将它提供给蚂蚁:-)该项目得到很好的维护,因为它似乎和广泛使用.我在很多现代UI/Batch应用程序中使用它,并且/我总是很满意它.它确实使用JCE,我曾经遇到过这个问题(在较旧的JRE上,但仍然).如果您计划将软件分发给您不熟悉的客户,这可能是一个问题.JCE需要在JRE安装本身内安装/配置的东西.可能99%的时间都在工作,但仍然......


SSHTools

从未使用过这个,但听到了好的东西.可能值得一试.


使用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网站(http://www.chiark.greenend.org.uk/~sgtatham/putty/)包含在putty-installer或可下载的独立版中.

你想了解更多吗?

请查看:http://linuxmafia.com/ssh/java.html或撰写评论.