`
qnzhl
  • 浏览: 29673 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Sftp java类的应用(包括密钥连接)

阅读更多
Sftp java类的应用(包括密钥连接)

使用:jsch-0.1.5.jar
/**
*
*/
package com.zgs.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;

/**
*
* @author Administrator
* 2015-4-10
*
*/
public class SFtp {

private String userName;
private String password;
private int port;
private String hostName;
private String priKeyFile;
private String passphrase;

Session session=null;
Channel channel=null;

/**
* @param userName
* @param password
* @param port
* @param hostName
*/
public SFtp(String userName, String password, int port, String hostName) {
super();
this.userName = userName;
this.password = password;
this.port = port;
this.hostName = hostName;
}
/**
* @param userName
* @param password
* @param port
* @param hostName
* @param priKeyFile
* @param passphrase
*/
public SFtp(String userName, String password, int port, String hostName,
String priKeyFile, String passphrase) {
super();
this.userName = userName;
this.password = password;
this.port = port;
this.hostName = hostName;
this.priKeyFile = priKeyFile;
this.passphrase = passphrase;
}
            
public ChannelSftp connect(){

JSch jsch=new JSch();
try {
if(port>0){
session=jsch.getSession(userName, hostName, port);
}else{
session=jsch.getSession(userName, hostName);
}
  if (session == null) {
  return null;
      //throw new Exception("session is null");
    }
  //设置登陆主机的密码
    session.setPassword(password);//设置密码  
    Properties sshConfig = new Properties();
    sshConfig.put("StrictHostKeyChecking", "no");
    session.setConfig(sshConfig);
    session.setTimeout(20000);
    session.connect();
  //创建sftp通信通道
    channel = (Channel) session.openChannel("sftp");
    channel.connect();
    return (ChannelSftp) channel;
} catch (JSchException e) {
// TODO Auto-generated catch block
return null;
}
}

/**
* 密钥文件连接
* @return
*/

public ChannelSftp priKeyConnect(){
JSch jsch=new JSch();
try {
if(priKeyFile !=null && !"".equals(priKeyFile)){
if(passphrase !=null && !"".equals(passphrase)){
jsch.addIdentity(priKeyFile, passphrase);
}else{
jsch.addIdentity(priKeyFile);
}
}
if(port >0){
session=jsch.getSession(userName, hostName, port);
}else{
session=jsch.getSession(userName, hostName);
}
Properties config=new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
//session.setTimeout(20000);
session.connect();
channel=session.openChannel("sftp");
channel.connect();
return (ChannelSftp)channel;
} catch (JSchException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}


/**
*
* @param is 要上传的本地文件流
* @param dsc 目标目录或文件,若是目录则上传的目标文件名和本地文件名一样
* @param sftp
* @return
*/
public boolean upload(InputStream is,String dsc,ChannelSftp sftp){
try {
sftp.put(is, dsc);
return true;
} catch (SftpException e) {
// TODO Auto-generated catch block
return false;
}
}

/**
*
* @param remotedir 要上传到的目录
* @param uploadFile 上传的文件
* @param sftp
* @return
*/
public boolean upload(String remotedir, String uploadFile, ChannelSftp sftp){
try {
sftp.cd(remotedir);
File file=new File(uploadFile);
sftp.put(new FileInputStream(file), file.getName());
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
return false;
}
}


/**
     * 下载文件
     *
     * @param directory
     *            下载目录
     * @param downloadFile
     *            下载的文件
     * @param saveFile
     *            存在本地的路径
     * @param sftp
     */
public void download(String directory, String downloadFile,
            String saveFile, ChannelSftp sftp) {
        try {
            sftp.cd(directory);
            sftp.get(downloadFile,saveFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

/**
     * 删除文件
     *
     * @param directory
     *            要删除文件所在目录
     * @param deleteFile
     *            要删除的文件
     * @param sftp
     */
    public void delete(String directory, String deleteFile, ChannelSftp sftp) {
        try {
            sftp.cd(directory);
            sftp.rm(deleteFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

public void disconnected(ChannelSftp sftp){
        if (sftp != null) {
            try {
                sftp.getSession().disconnect();
            } catch (JSchException e) {
                e.printStackTrace();
            }
            sftp.disconnect();
        }
    }
}


分享到:
评论

相关推荐

    java操作sftp的工具类(JSch)

    Java操作SFTP(Secure File Transfer Protocol)主要依赖于第三方库,如JSch。JSch是一个纯Java实现的SSH2库,允许开发人员...结合`SftpUtil`工具类,可以方便地集成SFTP操作到Java应用程序中,实现文件的安全传输。

    sftp上传下载 java

    在IT行业中,SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,它允许用户在不安全的网络环境中...了解和掌握这一技术,对于任何需要在Java应用程序中实现安全文件传输的开发者来说都是至关重要的。

    连接sftp服务器

    在IT行业中,SFTP...总的来说,Java中的SFTP操作涉及的主要知识点包括:JSch库的使用、SFTP协议、SSH连接、文件传输以及安全实践。通过这些知识,开发者可以构建安全可靠的文件传输功能,满足不同应用场景的需求。

    java SFTP上传所需jar和秘钥工具

    JSch-0.1.54.jar是这个库的特定版本,包含了用于连接到远程服务器,执行文件上传、下载等操作所需的类和方法。开发者可以使用JSch来创建Java应用程序,实现在服务器间安全地交换文件。 2. **Java Cryptography ...

    java实现sftp文件夹上传

    以上就是使用Java Swing实现SFTP文件夹上传的基本步骤,包括建立SSH连接、使用SFTP通道、上传文件和递归上传文件夹。对于生产环境,建议添加异常处理和错误提示,以及更安全的策略,如使用密钥对而非密码进行身份...

    java sftp文件上传

    Java SFTP文件上传是通过Java编程语言实现与Secure File Transfer Protocol(SFTP)服务器进行交互,将本地文件安全地传输到远程服务器的过程。SFTP是一种基于SSH的安全文件传输协议,它提供了在不安全网络上安全...

    java代码sftp和ftp上传下载文件

    在IT行业中,Java是一种广泛应用的编程语言,尤其在文件传输领域。本文将深入探讨如何使用Java实现SFTP(Secure File Transfer Protocol)和FTP(File Transfer Protocol)进行文件的上传与下载,以满足在Linux...

    java操作sftp上传下载

    在Java编程中,SFTP(Secure File Transfer Protocol)是一种安全的网络协议,用于在...在实际应用中,记得根据你的SFTP服务器配置调整连接参数,并确保安全性,例如启用密钥验证或使用更安全的主机密钥检查策略。

    java实现sftp上传下载文件

    总结来说,Java通过jcraft库实现了SFTP协议,使得开发人员能够安全地在Java应用中处理文件的上传和下载任务。了解这些知识点并能灵活运用,将有助于你构建健壮的文件传输系统。在实际项目中,还可以考虑异常处理、...

    用java写的SFTP代码源码下载

    接下来,我们将创建一个简单的Java类来实现SFTP连接和文件传输。首先,我们需要建立SSH连接,这涉及到设置主机名、端口、用户名和密码(或者私钥)。然后,通过Session对象创建一个ChannelSftp实例,这将为我们提供...

    java实现sftp客户端上传文件以及文件夹的功能

    `Ftp.java`可能是一个封装了SFTP操作的类,`properties.properties`是配置文件,包含SFTP连接的相关参数。`打包运行jar文件.txt`可能是关于如何构建和运行项目成可执行JAR的说明。 实现上述功能时,还需要注意异常...

    JAVA通过SFTP实现远程上传下载demo代码

    JSch是一个纯Java实现的SSH2库,它允许Java应用程序连接到SFTP服务器,执行文件传输操作。在你的压缩包中,已经包含了所需的JSch库。 以下是一个基本的SFTP连接、上传和下载文件的Java代码示例: ```java import ...

    sftp上传下载文件的Java代码

    JSCH是一个纯Java实现的SSH2库,可以用于执行SSH2协议的命令,包括SFTP操作。在提供的压缩包中,我们看到了"jsch-0.1.48.jar",这就是JSCH的库文件,需要将其添加到项目的类路径中。 下面是一个基本的SFTP文件上传...

    javasftp应用和开发文档资料.pdf

    Java SFTP 应用与开发涉及多个核心概念和技术,包括SFTP协议、非对称加密、密钥管理、SFTP服务器配置以及客户端编程接口。以下是对这些知识点的详细解释: 1. **SFTP(Secure File Transfer Protocol)**: SFTP是...

    用java写的SFTP代码.rar

    JCraft的JSch库是Java中广泛使用的SFTP实现库,它提供了SSH2协议的完整实现,包括SFTP。因此,你需要先下载并引入JSch库到你的项目中。 1. 引入JSch库: 在Maven项目中,可以在pom.xml文件中添加以下依赖: ```...

    java版SFTP实现示例(使用jsch)

    JSch(Java Secure Channel)是一个开源Java库,它允许开发者执行SSH2协议,包括SFTP。通过JSch,我们可以实现连接到远程服务器,创建、上传、下载、删除文件,以及列出目录等操作。 下面是一些使用JSch实现SFTP的...

    java通过sftp模式实现FTP的文件上传下载删除功能

    在Java编程中,SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,它基于SSH(Secure Shell)来提供服务,常用于在不同系统间安全地传输文件。本篇文章将详细探讨如何使用Java通过SFTP模式实现FTP的...

    java sftp文件上传代码

    Java SFTP文件上传是通过Java编程语言实现与Secure File Transfer Protocol (SFTP)服务器进行交互,将本地文件安全地传输到远程服务器的过程。SFTP是一种安全的网络协议,用于在客户端和服务器之间交换文件,它基于...

    SFTP連接所用到的jsch.jar包

    JSch是Java Secure Channel的一个开源实现,它提供了一个方便的API来连接SSH2协议(SFTP是基于SSH2的子协议)的服务器。 JSch库的核心功能包括: 1. **建立SFTP连接**:JSch库允许开发者通过提供主机名、端口号、...

    Sftp文件上传demo

    这个“SftpDemo”可能包含了一个类似的示例代码,展示了如何使用SFTP上传文件。在实际应用中,你可能需要处理更复杂的情况,如错误处理、连接超时、证书验证等。 除此之外,还有一些其他的SFTP客户端工具,如WinSCP...

Global site tag (gtag.js) - Google Analytics