`
runfeel
  • 浏览: 935751 次
文章分类
社区版块
存档分类
最新评论

SSH与Java

 
阅读更多

[原文地址:http://andrius.miasnikovas.lt/2009/07/ssh-with-java/]

最近,我需要做一些基于SSH-2协议操纵服务器的Java客户端程序。有相当多Java的SSH库可以选择。通常我喜欢尽可能使用BSD许可,所以我想我将会用Ganymed的SSH-2作为尝试。它很简单易用。下面是一个简短的例子如何连接到服务器使用的私钥,并执行一些命令。

importjava.io.*;
importch.ethz.ssh2.*;

publicclassExample{
publicstaticvoidmain(String[]args)throwsIOException{
Connectionconn=newConnection("hostname");
conn.connect();
FilepemKeyFile=newFile("privKey.pem");
booleanisAuth=conn.authenticateWithPublicKey("user", pemKeyFile,"keyPwd");
if(isAuth==false){
thrownewIOException("Authentication failed.");
}

Session sess=conn.openSession();
sess.execCommand("netstat -nl | egrep ':80' | wc -l");
InputStreaminp=sess.getStdout();
InputStreamReaderreader=newInputStreamReader(inp);
BufferedReaderbr=newBufferedReader(reader);
Stringline=br.readLine();

sess.close();
conn.close();
}
}

如果你不熟悉通过SSH公钥/私钥认证,请参阅下面的链接或谷歌搜索“无密码的ssh登录”。

http://ariadne.mse.uiuc.edu/Cluster/ssh_log_through.html

http://www.debian-administration.org/articles/152

大多数教程不会提到的一件事是,你的宿主目录应该有权限755。通过反复试验,我发现一些用户的主目录有777权限,只是不让你登陆一个私钥。

另一件事,我需要做的是复制一个文件到服务器。现在,这给了我一些意想不到的问题。虽然API似乎很简单,但是下面的代码没有任何效果。

Stringdata="sample data";
SFTPv3Client client=newSFTPv3Client(conn);
SFTPv3FileHandle handle=client.createFile("test_file.txt");

byte[]arr=data.getBytes();
client.write(handle,0, arr,0, arr.length);
client.closeFile(handle);
client.close();

在这里,conn对象是用于获取SSH连接,如第一段代码块所示。这看起来很简单,在服务器上创建一个文件,写一些字节,然后关闭,但是运行的结果只是在服务器上创建文件,但它始终是0字节的长度。我花了一段时间来弄清楚是什么错。现在是时候提到我用的是他们的网页上提供的“最新版本”Ganymed - build210。这让我很苦恼,代码没有按我希望的正常运行让我很沮丧,我开始查看Ganymed源码,我发现在SFTPv3Client类中的write(...)方法有一个不可满足的条件语句。我解决了这个问题,重新编译Ganymed的类库并可以运行。再后来我发现,实际上已经有一个Ganymed build211版,但他们又改了库名为trilead。在这个MAVEN2存储库中,你可以找到它(http://maven.ch.cam.ac.uk/m2repo/com/trilead/ssh2/build211/)。

编辑:2011-10-17

我已经创建了一个Maven项目,一个非常简单的类通过SSH使用Trilead库实现执行shell命令。Maven配置包含所需的库和依赖编译这个类的标签。只需使用MVN包里面提取的目录或创建你的IDE的项目文件。如果您需要更多的帮助与Maven入门指南这是一个很好的开始。

分享到:
评论

相关推荐

    J2SSH(Java SSH API )使用文档

    J2SSH(Java SSH API )使用文档 J2SSH(Java SSH API )使用文档 J2SSH(Java SSH API )使用文档

    SSHA.zip_SSHA_java SSHA_ssha加密

    在本教程中,我们将深入探讨SSHA加密以及如何在Java环境中实现SSHA加密。 1. **SSHA加密原理**: - **SHA(Secure Hash Algorithm)** 是一种非对称加密算法,它将任意长度的数据转化为固定长度的哈希值,具有不...

    trilead-ssh2 for java

    《Trilead SSH2 for Java:深度解析与实践指南》 在Java开发中,安全通信是不可或缺的一部分,尤其是在远程操作、文件传输等场景下。Trilead SSH2库为Java开发者提供了一套强大的SSH(Secure Shell)实现,使得在...

    jcraft源代码,java连接SSH

    **SSH与Java中的jcraft库** SSH协议在Java中通常通过第三方库实现,jcraft就是其中之一。jcraft提供了一个名为jcabi-ssh的库,它是一个纯Java实现的SSH客户端,支持SSH2协议。这个库使得开发者无需依赖操作系统提供...

    Java SSH 框架整合,学习源码

    5. **优势与应用场景**:SSH框架整合的优势在于提高了开发效率,降低了代码耦合度,易于维护。常用于企业级Web应用开发,如电子商务系统、内容管理系统等。 6. **学习资源**:"mvn_ssh_01"可能包含的是一个基于...

    java linux ssh登陆

    标题“Java Linux SSH登录”指的是使用Java编程语言与Linux操作系统进行安全外壳(SSH)通信的过程。在描述中提到,这个过程通常涉及建立一个通道并执行单个命令。这里,我们将会详细探讨Java如何通过SSH连接到Linux...

    在线考试系统(基于Java—SSH完整)

    本项目是基于Java技术栈,采用Struts、Spring和Hibernate这三大框架(通常称为SSH)构建的。SSH框架组合是Java Web开发中的经典选择,因为它能够有效地处理MVC(模型-视图-控制器)架构,实现业务逻辑和表现层的分离...

    jsp ssh mvc java web j2ee bs 在线考试系统+论文+源码 网页设计

    《基于JSP SSH MVC的Java Web在线考试系统详解》 在线考试系统是现代教育技术发展的重要成果,它利用互联网技术,实现了考试的无纸化、自动化。本系统以JSP(JavaServer Pages)为核心,结合SSH(Struts、Spring、...

    SSH_JAVA_API合集

    SSH_JAVA_API合集,一次找全,拿来分享!

    ssh_java_eshop.rar_JAVA EE_java ee系统_ssh esh_ssh_java_eshop_网店系统

    Hibernate作为持久层框架,是SSH中的ORM(对象关系映射)工具,它简化了数据库操作,将Java对象与数据库表对应起来,使得开发者可以使用面向对象的方式处理数据。在SSH Java EShop中,Hibernate可能用于管理商品信息...

    jsp ssh mvc java web j2ee网络商城+论文+源码 购物系统网页设计

    标题"jsp ssh mvc java web j2ee网络商城+论文+源码 购物系统网页设计"中,提到了一系列关键技术和应用领域,这些包括: 1. JSP(JavaServer Pages):JSP是Java平台上用于创建动态网页的技术,它允许开发者在HTML...

    最好的java ssh实现源码

    Java SSH实现源码详解 SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地执行远程命令和传输数据。它通过加密技术保证了通信的安全性,防止了中间人攻击和其他形式的数据窃听。Java SSH实现允许...

    Java三大框架SSH框架

    Java SSH 框架是Java开发企业级应用的三大核心框架,它们分别是Spring、Struts 和 Hibernate。这个框架组合提供了一种高效且灵活的方式来构建Web应用程序,尤其在处理增删改查(CRUD)操作、分页、上传下载等功能时...

    基于SSH框架的Java语言的在线考试系统

    **基于SSH框架的Java语言在线考试系统** SSH框架是Java Web开发中常用的一种技术栈,由Struts、Spring和Hibernate三个开源框架组成。这个在线考试系统利用SSH框架,实现了管理员、教师和学生三类用户的权限管理和...

    SSH.rar_java ssh_java框架项目_ssh

    这个SSH.rar文件可能包含以下内容:项目结构(如src目录、WEB-INF目录)、Struts配置文件(struts.xml)、Spring配置文件(applicationContext.xml)、Hibernate配置文件(hibernate.cfg.xml)、Action类、DAO(Data...

    ssh--blog.zip_blog ssh_java blog_java ssh_ssh博客_基于SSH

    这个"ssh--blog.zip_blog ssh_java blog_java ssh_ssh博客_基于SSH"的项目,显然是一个基于SSH框架开发的博客系统,特别适合Java初学者学习和实践。 SSH框架是Spring、Struts和Hibernate的组合,这三大框架在Java ...

    java在线考试系统SSH框架源代码

    Java在线考试系统基于SSH框架的源代码是一个典型的Web应用程序开发示例,SSH是Spring、Struts和Hibernate三个开源框架的首字母缩写,它们在Java Web开发中扮演着重要角色。下面将详细介绍这三个框架以及如何在在线...

    java_SSH项目

    "SSH"在IT行业中通常指的是Struts2、Spring和Hibernate三个开源框架的组合,这是一个经典的Java Web开发技术栈。这个"java_SSH项目"显然是一个使用这三个框架构建的实际项目实例,对于想要深入理解和学习Java Web...

    Ganymed SSH-2 for Java

    **Ganymed SSH-2 for Java** 是一个开源库,专为Java开发者设计,用于实现Secure Shell(SSH-2)协议。...通过集成这个库,Java开发者可以安全、高效地利用SSH-2协议与远程系统进行交互,极大地扩展了Java应用的功能。

    java 新的SSH包

    5. 兼容性增强:新SSH包可能增强了与不同操作系统和SSH服务器的兼容性。 6. 错误修复:修复了过去版本中的bug,提升了整体稳定性。 在Java中,使用SSH包通常涉及到以下步骤: 1. 添加依赖:将新SSH包导入到项目中...

Global site tag (gtag.js) - Google Analytics