通过JCraft的JSch的依赖包(jsch-0.1.42.jar下载)实现SSH2协议远程通信,如远程连接到linux服务器进行文件上传下载或数据同步,具体代码示例如下所示import java.io.File;@b@import java.io.FileInputStream;@b@import java.io.FileNotFoundException;@b@import java.io.FileOutputStream;@b@import java.io.IOException;@b@import java.io.InputStream;@b@import java.util.Properties;@b@import java.util.Vector;@b@@b@import com.jcraft.jsch.Channel;@b@import com.jcraft.jsch.ChannelSftp;@b@import com.jcraft.jsch.JSch;@b@import com.jcraft.jsch.Session;@b@import com.jcraft.jsch.SftpException;@b@@b@public class SftpUtil {@b@    @b@    private Properties sftpInfo = new Properties();@b@    private ChannelSftp sftp = null;//sftp连接@b@    private Session sshSession=null;@b@    @b@    {@b@        try {@b@            sftpInfo.load(SftpUtil.class.getResourceAsStream("/sftpInfo.properties"));@b@        } catch (IOException e) {@b@            // TODO 自动生成的 catch 块@b@            e.printStackTrace();@b@        }@b@    }@b@@b@    private SftpUtil() {@b@    }@b@@b@    public static SftpUtil getInstance() {@b@        return new SftpUtil();@b@    }@b@@b@    /**@b@     * 连接sftp服务器@b@     * @return ChannelSftp sftp连接@b@     */@b@    public ChannelSftp connect() {@b@        String username=sftpInfo.getProperty("username");//用户名@b@        String host=sftpInfo.getProperty("host");//主机@b@        int port=Integer.parseInt(sftpInfo.getProperty("port"));//端口@b@        String password=sftpInfo.getProperty("password");//密码@b@        if(this.sftp==null){@b@            try {@b@                JSch jsch = new JSch();@b@                jsch.getSession(username, host, port);@b@                this.sshSession = jsch.getSession(username, host, port);//创建session@b@    @b@                //下面开始设置session参数@b@                this.sshSession.setPassword(password);@b@                Properties sshConfig = new Properties();@b@                sshConfig.put("StrictHostKeyChecking", "no");@b@                this.sshSession.setConfig(sshConfig);@b@                this.sshSession.setTimeout(60000);@b@                //session连接@b@                this.sshSession.connect();@b@                Channel channel = sshSession.openChannel("sftp");@b@                channel.connect();@b@                this.sftp = (ChannelSftp) channel;//转换为sftp连接@b@                System.out.println("连接成功。。。");@b@            } catch (Exception e) {@b@                System.out.println("连接异常。。。");@b@                e.printStackTrace();@b@            }@b@        }@b@        return sftp;@b@    }@b@@b@    /**@b@     * 上传文件@b@     * @param uploadFile 要上传的文件@b@     * @param filePath 要上传文件的路径@b@     * @return boolean 是否上传成功@b@     */@b@    public boolean upload(String uploadFile) {@b@        try {@b@            this.sftp.cd(sftpInfo.getProperty("uploadPath"));@b@            File file = new File(uploadFile);@b@            this.sftp.put(new FileInputStream(file), file.getName());@b@            return true;@b@        } catch (SftpException e) {@b@            e.printStackTrace();@b@            return false;@b@        } catch (FileNotFoundException e) {@b@            e.printStackTrace();@b@            return false;@b@        }@b@    }@b@@b@    /**@b@     * 下载文件@b@     * @param downloadFile 下载的文件@b@     * @param saveFile 存在本地的路径@b@     * @return boolean 是否下载成功@b@     */@b@    public boolean download(String downloadFile, String saveFile) {@b@        try {@b@            this.sftp.cd(sftpInfo.getProperty("downloadPath"));@b@            File file = new File(saveFile);@b@            this.sftp.get(downloadFile, new FileOutputStream(file));@b@            return true;@b@        } catch (SftpException e) {@b@            e.printStackTrace();@b@            return false;@b@        } catch (FileNotFoundException e) {@b@            e.printStackTrace();@b@            return false;@b@        }@b@    }@b@    @b@    /**@b@     * 下载文件@b@     * @param downloadFile 下载的文件@b@     * @return InputStream 返回一个输入流@b@     */@b@    public InputStream download(String downloadFile) {@b@        try {@b@            this.sftp.cd(sftpInfo.getProperty("downloadPath"));@b@            return sftp.get(downloadFile);@b@        } catch (SftpException e) {@b@            e.printStackTrace();@b@            return null;@b@        } @b@    }@b@@b@    /**@b@     * 删除文件@b@     * @param deleteFile 要删除的文件@b@     * @return boolean 是否删除成功@b@     */@b@    public boolean delete(String deleteFile) {@b@        try {@b@            this.sftp.cd(sftpInfo.getProperty("downloadPath"));@b@            this.sftp.rm(deleteFile);@b@            return true;@b@        } catch (SftpException e) {@b@            e.printStackTrace();@b@            return false;@b@        }@b@    }@b@@b@    /**@b@     * 列出目录下的全部文件@b@     * @param filePath 要遍历文件的路径@b@     * @return Vector 一个保存有文件的Vector@b@     */@b@    @SuppressWarnings("unchecked")@b@    public Vector listFiles(String filePath)@b@            throws SftpException {@b@        return sftp.ls(sftpInfo.getProperty(filePath));@b@    }@b@    @b@    /**@b@     * 关闭连接@b@     * */@b@    public void disconnect(){@b@        if(this.sftp != null){@b@            if(this.sftp.isConnected()){@b@                this.sftp.disconnect();@b@                System.out.println("sftp连接关闭");@b@            }else if(this.sftp.isClosed()){@b@                System.out.println("连接已经被关闭");@b@            }@b@        }@b@        if(this.sshSession!=null){@b@            if(this.sshSession.isConnected()){@b@                this.sshSession.disconnect();@b@                System.out.println("session连接关闭");@b@            }@b@        }@b@    }@b@    @b@    public static void main(String args[]){@b@        SftpUtil ftpUtil = SftpUtil.getInstance();@b@        try {@b@            if (ftpUtil.connect().isConnected()) {@b@                // 测试上传@b@                ftpUtil.upload("C:/WS/NJ/test/ENV.txt");@b@                // 测试下载@b@                ftpUtil.download("test.txt", "C:/WS/NJ/test/download.txt");@b@            }@b@        } catch (Exception e) {@b@            e.printStackTrace();@b@        } finally {@b@            ftpUtil.disconnect();@b@        }@b@  }@b@}

sftpInfo.properties的配置内容如下host=www.xwood.net@b@username=root@b@password=123456@b@port=22@b@uploadPath=/usr/local/test/upload@b@downloadPath=/usr/local/test/download

��

java ssh2连接_通过JCraft的jsch包基于SSH2协议实现连接linux服务器提供终端操作的java工具实现类SftpUtil...相关推荐

  1. http协议跟服务器交互,基于HTTP协议的客户端与服务器之间的数据交互方法专利_专利查询 - 天眼查...

    L-种基于HTTP协议的客户端与服务器之间的数据交互方法,应用于智能$居系统 中,以使用户的客户端与智能家居系统的服务器之间建立稳定的网络连接并进行数据交 互,所述方法包括步骤: 所述客户端与所述服务 ...

  2. java 小工 到_测试小工——从0到1搭建最简单的Linux网站

    目录 1 Linux云服务 2 工具类应用安装 1.FileZilla 2.Xshell(可选项) 3 搭建JAVA环境 1.通过FileZilla上传JDK压缩包到usr目录下 2.解压-重命名 3 ...

  3. mac建立sftp连接_【5分钟玩转Lighthouse】Win10远程连接同步代码

    0x00 前言 最近不断有同学最近来咨询:之前咱们的Lighthouse教程都是从Linux/Mac笔记本下操作的,能不能出一篇Windows下的实践案例呢?而且,Windows笔记本的环境和远程Li ...

  4. java基础篇18-网络编程的常识和基于TCP协议的编程模型

    1.网络编程的常识   目前主流的网络通讯软件有:微信.QQ.YY.陌陌.探探.飞信.阿里旺旺....   在吗?  1.1 七层网络模型   为了保证数据传递的可靠安全等等,ISO(国际标准委员会组 ...

  5. 连接Linux服务器:Win免费SSH客户端工具

    1Win免费SSH客户端工具a 作为一个Windows操作系统用户,如果想要连接Linux服务器来进行文件之间的传送,那么需要一个Secure Shell软件(简称SSH的).实际上,SSH是一个网络 ...

  6. java jpa jar_JPA 开发所需的Jar包 (基于Hibernate)

    JPA 开发所需的Jar包 (基于Hibernate) (一)下载Sun 的JPA规范(即:Jar包)登陆JavaEE 的 Technologies 页面: http://java.sun.com/j ...

  7. win10自带sftp服务器_高手亲自解决win10系统下怎么使用OpenSSH设置SFTP服务器的完全操作办法...

    今日有网友来向小编反馈说他在使用系统的时候遇到了win10系统下怎么使用OpenSSH设置SFTP服务器的问题,有可能我们都会遇到win10系统下怎么使用OpenSSH设置SFTP服务器这样的情况吧, ...

  8. java获取网络图片(比如微信授权后的头像)上传至linux服务器

    //原生获取微信信息CodeWxUserInfoVo,然后将头像上传至自己的linux服务器 //因为上传用的是 MultipartFile file所以我下载图片后返回了MultipartFile文 ...

  9. java启动无线网络连接_在无线模式存在的情况下,如何连接无线网络

    我使用下面的代码在android手机上创建一个无线模式.出于某种原因它每次都会创建一个新模式,因此对于相同的无线网络手机将会有多个模式.是否有办法能实现当一个模式已经存在时,就不要再创建一个新的模式? ...

  10. java 集合反射_关于granite源码包CollectionUtil集合工具类获取集合反射类型、实例化各种集合类型HashSet/ArrayList等...

    一.前言 基于granite源码包org.granite.util.CollectionUtil集合工具类,分别获取集合反射类型java.lang.reflect.Type.实例化newCollect ...

最新文章

  1. python方向键控制角色_python方向键控制上下左右代码
  2. 支付宝首页新增商家服务进度卡片 目前正在灰度测试中
  3. 系统不做限流,我看你是对中国人口数量有什么误解
  4. java string对象,java中String对象
  5. Kubernetes 小白学习笔记(3)--物理机、虚拟化、容器化、云原生
  6. IntelliJ IDEA导包快捷键以及创建方法
  7. 图像处理经典算法及OpenCV程序
  8. xsos:一个在Linux上阅读SOSReport的工具
  9. Java定时任务与分布式定时任务
  10. 字节跳动大裁员,测试工程师差点遭团灭:大厂招人背后的套路,有多可怕?
  11. python中spider的用法_Python爬虫从入门到放弃(十五)之 Scrapy框架中Spiders用法
  12. 高铁的速度 华为的服务
  13. 《OKR工作法》读书笔记
  14. 首批最佳骑行路线揭晓
  15. 红酒数据探索(Python内置对象)
  16. 丢失的拜占庭将军问题之谜
  17. 一度智信|拼多多优惠券怎么取消
  18. 解决:删除文件夹提示指定的文件名无效或太长,无法删除
  19. 马哥python培训机构怎么样
  20. OKI C8800dn 激光打印机驱动

热门文章

  1. Windows 8.1安装python出现api-ms-win-crt-runtime-l1-1-0.dll
  2. JSTL EL 详解
  3. 你的第一个 iOS 应用程序: 100% 的编程方式
  4. SharePoint 2010 BDC Model项目部署出错:“The default web application could not be determined.”...
  5. 招聘人才的网站(杭州)
  6. oracle rman optimization,关于RMAN中的优化(Optimization)
  7. 拓端tecdat|使用R语言创建自定义桑基图Sankey图
  8. 拓端tecdat|matlab脉冲响应图的时域特征
  9. android系统安全测试,Android 安全测试初探 (二)
  10. MATLAB软件基础