`
qnzhl
  • 浏览: 28866 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ssh java类的连接与远程命令执行(包括密钥连接)

阅读更多
ssh java类的连接与远程命令执行(包括密钥连接)
首先先介绍ssh的密钥连接(lunix):
例:10.196.20.4(user1/1234)服务器建立-- 10.196.21.130(user2/1234)服务器的密钥连接
1. 在10.196.20.4服务器上生产公密钥文件
ssh-keygen –t dsa   ###在$home/.ssh文件下会生成id_dsa.pub 和id_dsa文件
chmod –R 700 /home/user1/.ssh
chmod –R 600 /home/user1/.ssh/authorized_keys
scp id_dsa.pub user2@10.196.21.130:/home/user2/.ssh/id_dsa.pub  ###复制公钥到21.130
ssh dsam@10.196.21.130  ##输入密码
cd /home/dsadm/.ssh
cat id_dsa.pub >> authorized_keys
chmod –R 700 /home/user2/.ssh
chmod –R 600 /home/user2/.ssh/authorized_keys
exit  ##退出21.130 进入20.4
ssh user2@10.196.21.130  ##进行连接测试
  以上20.4中的id_dsa 就是密钥文件,可以放在任何服务器上密钥连接21.130

使用:ganymed-ssh-2-build260.jar
package com.zgs.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;

/**
*
* @author Administrator
* 2015-4-11
*
*/
public class SSHConnect {

private String hostName;
private String userName;
private String password;
private int port;
private File  pemFile;
Connection conn=null;
/**
* @param hostName
* @param userName
* @param password
*/
public SSHConnect(String hostName, String userName, String password) {
super();
this.hostName = hostName;
this.userName = userName;
this.password = password;
}

public boolean passConnect()throws Exception{
    conn=new Connection(hostName);
conn.connect();
boolean isAuthenticated =conn.authenticateWithPassword(userName, password);
return isAuthenticated;
}

public boolean publicKeyConnect()throws Exception{
conn=new Connection(hostName);
conn.connect();
boolean isAuthenticated =conn.authenticateWithPublicKey(userName,pemFile, password);
return isAuthenticated;
}


public List execCommand(String command){
try {
if(!passConnect()){
if(!publicKeyConnect()){
throw new Exception("连接配置有问题哟!");
}
}
Session session=conn.openSession();
session.execCommand(command);
InputStream stdout=new StreamGobbler(session.getStdout());
BufferedReader br=new BufferedReader(new InputStreamReader(stdout));
List list=null;
String line;
while((line=br.readLine())!=null){
list.add(line);
}
return list;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
分享到:
评论

相关推荐

    基于jsch的ssh访问

    基于jsch包实现远程服务器的sftp访问,并可远程发送命令执行,可以配合https://download.csdn.net/download/u011230766/10710755,实现密钥登录,类KeyGen用于生成非对称密钥

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java开源包4

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java_jsp项目源码_移动ssh项目(struts+spring+hibernate+oracle).rar

    3. **远程服务器管理**:项目支持对远程服务器的管理,包括服务器的添加、编辑、删除、连接等功能。用户可以通过Web界面轻松管理远程服务器,实现远程服务器的集中管理。 4. **远程桌面访问**:项目支持通过Web界面...

    java源码包---java 源码 大量 实例

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java图像压缩源码-scala-ssh:通过SSH为Scala应用程序进行远程shell访问

    java图像压缩源码scala-ssh是一个通过 SSH 提供远程 shell 访问的库。 它以提供以下功能为基础: 远程执行一个或多个 shell 命令 访问远程 shell 命令的stdin 、 stdout 、 stderr和 exitcode 通过密码、公钥或代理...

    java开源包11

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java开源包6

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java开源包9

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java开源包101

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java开源包5

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java源码包4

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    java开源包8

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java开源包10

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java源码包3

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

    java开源包1

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java开源包3

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java源码包2

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...

Global site tag (gtag.js) - Google Analytics