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;
}
}
分享到:
相关推荐
在实际项目中,为了提高代码的可维护性和复用性,通常会将SSH连接和命令执行封装成一个工具类,以便在多个地方调用。SSHXCUTE.jar简化了Java开发中的SSH操作,使得远程执行Linux命令变得更加便捷和安全。
SSH(Secure Shell)是一种网络协议,用于在不安全的...通过以上步骤,你可以使用Java的SSH2框架(如JSch)连接到远程服务器,执行命令和传输文件。这在自动化运维、远程脚本执行、文件同步等多个场景中都非常实用。
在Java中,我们可以利用一些库如JSch或Apache Commons Net来实现SSH连接和命令执行。 首先,我们需要理解Java中的SSH执行命令的基本流程: 1. **建立SSH连接**:这通常涉及设置SSH服务器的主机名、端口、用户名和...
在Java编程中,执行SSH(Secure Shell)命令是一项常见的任务,尤其在远程服务器管理、自动化运维和分布式系统中。SSH是一种网络协议,用于安全地在远程主机上执行命令和传输数据。下面我们将深入探讨如何在Java中...
Java通过ganymed-ssh2-build210.jar库实现SSH远程连接Linux终端是一个常见的应用场景,主要用于自动化运维、系统管理或者开发过程中需要与Linux服务器交互的场景。ganymed-ssh2-build210.jar是Java的一个开源SSH库,...
总结,通过Java执行远程Linux服务器命令主要涉及到SSH协议、JSch库的使用,以及可能的工具类库如Apache Commons Exec。这些技术在日常的系统管理和自动化任务中扮演着重要角色,帮助开发者实现远程操作和管理。
Linux远程连接工具类SSH是一种广泛使用的通信协议,它允许用户在本地计算机上安全地操作远程Linux系统。SSH,全称为Secure Shell,旨在提供加密的网络服务,特别适用于管理服务器、执行命令、传输文件等场景。在开发...
总的来说,Java通过JSch库远程登录Linux服务器并执行命令,是Java与Linux系统交互的一种常用方式,尤其适用于自动化运维和脚本化的任务。通过理解并实践这些代码,你将能够更好地理解和掌握Java进行远程操作的能力。
连接建立后,用户可以通过SSH进行命令行交互,执行远程系统的各种操作,如文件传输、进程管理等。 SSH提供了多种认证方式,最常见的是基于密钥对的认证。这种方式下,用户在本地生成一对公钥和私钥,将公钥上传到...
J2SSH是Java平台上的一个SSH库,允许开发人员在应用程序中集成SSH功能,如远程命令执行、文件传输等。学习使用J2SSH库可以让你的Java应用具备SSH连接能力,这对于自动化任务、远程管理系统非常有用。 总之,SSH连接...
Trilead SSH2是一个完全开源的Java库,它实现了SSH2协议,支持包括SFTP(Secure File Transfer Protocol)、端口转发、X11转发、密钥交换、会话管理等功能。这个库不仅提供了完整的SSH2功能,还附带了详尽的文档和...
JSch是一个纯Java实现的SSH2库,它允许开发者连接到支持SSH协议的服务器,并执行命令、传输文件等操作。 ### JSch库的引入 在Java项目中,引入JSch库通常是通过Maven或Gradle来完成的。在Maven的`pom.xml`文件中,...
Java远程连接技术主要涉及到网络通信和安全性,其中SSH(Secure Shell)是一种安全的网络协议,用于在不安全的网络环境中提供加密的通信通道。在这个场景中,`ganymed-ssh2-build210.jar` 是一个Java库,它允许Java...
5. **错误处理与安全性**:在实际应用中,我们需要处理连接失败、命令执行错误等异常情况。同时,务必注意保护密码安全,避免明文存储,可以使用密钥对认证或通过密钥代理等方式提高安全性。 6. **性能优化**:如果...
Java使用JSCH(Java Secure Channel)库连接远程服务器是一个常见的任务,特别是在自动化运维、文件传输或者执行远程命令等场景中。JSCH是一个纯Java实现的SSH2库,它提供了连接到支持SSH协议的服务器的能力,如...
**Ganymed SSH-2 for Java** 是一个开源库,专为Java开发者设计,用于实现Secure Shell(SSH-2)协议。...通过集成这个库,Java开发者可以安全、高效地利用SSH-2协议与远程系统进行交互,极大地扩展了Java应用的功能。
这个库提供了丰富的API,可以实现SSH连接、文件传输、命令执行等功能。`ganymed-ssh2`库基于Java,允许开发者在不依赖操作系统特定功能的情况下与远程SSH服务器进行交互。 1. **建立SSH连接**:使用`ganymed-ssh2`...
JavaSSH框架,通常指的是Java实现的安全 Shell (SSH) 库,它允许开发者在Java应用程序中进行远程系统操作,如执行命令、传输文件等。SSH是一种网络协议,用于提供安全的远程登录和其他网络服务,比如SFTP(Secure ...
1. **SSH协议基础**:SSH协议通常用于在不安全的网络上提供安全的通信,包括远程登录、命令执行、文件传输等。它通过非对称加密、对称加密和哈希函数保证了通信的安全性。 2. **Apache SSHD库**:理解SSHD库的架构...
在IT测试领域,Apache JMeter是一款广泛...总的来说,"jmeter连接ssh的jar包.zip"提供了在JMeter中实现SSH连接和命令执行的能力,让测试工程师能够在性能测试中纳入更多的系统层面的操作,从而获得更全面的测试结果。