Java connect to SSH2

Ganymed SSH-2(ch.ethz.ssh2)

 

一、简介

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
posted @ 2022-11-26 07:12  商君治国安邦之张莽  阅读(209)  评论(0编辑  收藏  举报