SSH2Util: java 操作ssh2, 实现远程执行linux命令,上传/下载服务器

本文介绍了如何使用Java中的ganymed-ssh2库,通过引入maven依赖并创建SSH2连接,实现远程Linux命令执行(ssh)和文件上传/下载(scp)。详细步骤包括连接建立、身份验证、会话创建以及操作执行。同时,文章还自定义了SSH2工具类以简化开发,并提供了测试类以验证功能。
摘要由CSDN通过智能技术生成

java 领域中, 开源jar 包ganymed-ssh2 对ssh2协议进行了实现, 通过ganymed-ssh2 可实现Linux命令: ssh 和 scp 的功能. ganymed-ssh2 提供了多种认证方式, 可通过用户名密码, 秘钥等方式. 笔者常用的是用户名密码方式。 ganymed-ssh2 的开发步骤:

  1. 使用主机地址创建连接对象new Connection(host)
  2. 创建TCP连接, connection.connect()
  3. 进行身份认证,笔者使用的是用户名密码方式: connection.authenticateWithPassword(username, password)
  4. 创建会话,每次远程操作都需要重新打开一个会话. connection.openSession()
  5. 执行ssh 操作或scp 操作
  6. 关闭连接: connection.close()

1. 引入maven 依赖

笔者习惯于使用maven 开发, 所以新建maven 项目, 然后引入依赖. 需要注意的是笔者使用的是build210 版本, 是buildxxx系列的最高版本. 不同版本的api 还是有差别的.

<dependencies>
   <!-- 引入ssh2 依赖 -->
    <dependency>
        <groupId>ch.ethz.ganymed</groupId>
        <artifactId>ganymed-ssh2</artifactId>
        <version>build210</version>
    </dependency>

    <!-- 引入单元测试 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 开发工具类

2.1 自定义SSH2 工具类

笔者觉得ganymed-ssh2 提供的API 并不符合笔者的开发习惯,所以进行了二次封装。 将常用的ssh2 操作封装成了一个工具类。

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

import java.io.*;

/**
 * @Description: ssh2 工具类
 * @author: zongf
 * @date: 2019-03-25 20:23
 */
public class SSH2Util {
   

    private static String DEFAULT_CHARSET = "UTF-8";


    /**
     * @Description: 建立ssh2连接
     * @param host 主机地址
     * @param username 用户名
     * @param password 密码
     * @return: Connection
     * @author: zongf
     * @time: 2019-03-25 20:46:32
     */
    public static Connection openConnection(String host, String username, String password) {
   
        Connection connection;

        try {
   
            connection = new Connection(host);

            // 建立ssh2 连接
            connection.connect();

            // 校验用户名密码
            boolean login = connection.authenticateWithPassword(username, password);

            // 登录成功返回连接
            if (login) {
   
                return connection;
            }else {
   
                throw new RuntimeException("用户名密码不正确");
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值