首页 > 编程语言 >Java connect to SSH2

Java connect to SSH2

时间:2022-11-26 07:22:18浏览次数:61  
标签:ch Java System ssh2 connect new SSH2 conn ethz

Ganymed SSH-2(ch.ethz.ssh2)

于 2020-09-21 11:17:18 发布6102 收藏 10 分类专栏: 项目实践 版权   项目实践专栏收录该内容 15 篇文章0 订阅 订阅专栏

一、简介

Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。在使用它的过程中非常容易,只需要指定合法的用户名口令,或者授权认证文件,就可以创建到远程Linux主机的连接,在建立起来的会话中调用该Linux主机上的脚本文件,执行相关操作。

官方API文档:
http://www.ganymed.ethz.ch/ssh2/javadoc/ch/ethz/ssh2/package-summary.html

使用方法:将 ganymed-ssh2-build210.jar 加入到项目的lib中

二、使用步骤

  1. 获取连接new Connection(ipAddr)
  2. 服务器认证、授权,输入用户名和密码authenticateWithPassword(username, password)
  3. 使用连接conn,打开一个session,openSession()
  4. session.execCommand(“执行的命令”),执行Linux脚本命令
  5. 接收服务器控制台返回的信息,stream流的方式进行读取
  6. 得到脚本运行成功与否的标志 :0-成功 非0-失败。session.getExitStatus()
  7. 关闭session和connection

三、案例

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;

public class Basic {
	public static void main(String[] args) {
		String hostname = "192.168.10.100";//远程机器IP
		String username = "xxj";//登录用户名
		String password = "123456";//登录密码

		try {
			Connection conn = new Connection(hostname);

			conn.connect();

			boolean isAuthenticated = conn.authenticateWithPassword(username, password);
			///是否登录成功
			if (isAuthenticated == false) {
				throw new IOException("认真失败!!!");
			}
			Session sess = conn.openSession();
			//执行命令
			sess.execCommand("uname -a && date && uptime && who");

			System.out.println("Here is some information about the remote host:");

			//创建输入流
			InputStream stdout = new StreamGobbler(sess.getStdout());
			//字符流
			BufferedReader br = new BufferedReader(new InputStreamReader(stdout));

			while (true) {
				String line = br.readLine();
				if (line == null)
					break;
				System.out.println(line);
			}
			System.out.println("ExitCode: " + sess.getExitStatus());
			//关闭连接
			sess.close();
			conn.close();
		} catch (IOException e) {
			e.printStackTrace(System.err);
			System.exit(2);
		}
	}
}

四、常用API

  1. authenticateWithPassword(…)使用密码进行认证
  2. openSession()获取会话信息
  3. execCommand(…)执行命令
  4. getExitStatus(…)退出状态
  5. 常用类:
    Connection
    Session
    SCPClient
    SFTPv3Client
    SFTPv3DirectoryEntry
    SFTPv3FileAttributes
    SFTPv3FileHandle
    StreamGobbler

标签:ch,Java,System,ssh2,connect,new,SSH2,conn,ethz
From: https://www.cnblogs.com/managechina/p/16926844.html

相关文章

  • java简单解析wsdl文件
    1packagecom.example.demo.api.soap.client.userInterface.controller;234importorg.w3c.dom.Document;5importorg.w3c.dom.NamedNodeMap;6importor......
  • Java JDK11的下载与安装
    前言本篇文章是基于win10系统下载安装JDK11的教程。1.下载OracleJDK进入Oracle官网:https://www.oracle.com/java/technologies/downloads/#java11选择Java11→Winodws→......
  • Java8新特性
    Java8NashornJavaScriptJava8新特性Java8新特性Nashorn一个javascript引擎。NashornJavaScriptEngine在Java15已经不可用了。这已经在Java11标记为:@de......
  • 重点--微信公众号(事件回调&生成带参数二维码&扫码关注事件&消息模板推送)java版
     1.业务处理(全部业务)importcom.alibaba.fastjson.JSONObject;importorg.springframework.util.StringUtils;importorg.springframework.web.bind.annotation.*;impo......
  • 【Java】EasyCaptcha 封装验证码接口
     依赖坐标:<dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2......
  • JAXB 实现java对象与xml之间互相转换
    首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用:1.@XmlRootElement,用于类级别的注解,对应xml的跟元素。通过name属性定义这个根节点的名称。2.@XmlAccessorType,定......
  • 利用java-springboot和paddleocr进行ocr识别
    利用java-springboot和paddleocr进行ocr识别项目:https://github.com/jiangnanboy/java-springboot-paddleocrTableofContentsAboutGettingStartedResultContactR......
  • Java基本数据类型
    Java基本数据类型1.整型byte占1字节空间,取值范围-2^7~(2^7)-1,二进制首位为符号位,二进制表示0_000_0000~1_111_1111,1_000_0000记为-128。/***Aconstant......
  • 记一次java四舍五入错误结果的问题
    1.背景在进行除法计算时,结果不符合预期2.测试过程double精度问题,导致四舍五入结果误差BigDecimalb1=newBigDecimal(0.245);BigDecimalb2=new......
  • JAVA数据类型拓展
    数据类型拓展,基础面试题讲解整数//整数拓展进制二进制0b十进制八进制0十六进制0xinti=10;inti2=0b10;inti3=010;......