精华内容
下载资源
问答
  • stringHashMap =new HashMap<...try {channel = (Channel) session.openChannel("sftp");channel.connect(10000000);ChannelSftp sftp = (ChannelSftp) channel;try {sftp.cd(sPath);} catch (SftpException...

    stringHashMap =new HashMap<>();

    try {

    channel = (Channel) session.openChannel("sftp");

    channel.connect(10000000);

    ChannelSftp sftp = (ChannelSftp) channel;

    try {

    sftp.cd(sPath);

    } catch (SftpException e) {

    sftp.mkdir(sPath);

    sftp.cd(sPath);

    }

    VectorlistFiles = sftp.ls(sftp.pwd());

    for (ChannelSftp.LsEntry file : listFiles)

    {

    String fileName = file.getFilename();

    try

    {

    InputStream inputStream = sftp.get(sftp.pwd() + "/" + fileName);

    stringHashMap.put(fileName,inputStream);

    }

    catch (SftpException e)

    {

    e.printStackTrace();

    }

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    return stringHashMap;

    }

    public static void upLoadFile(Session session, File file , String sPath) {

    Channel channel = null;

    try {

    channel = (Channel) session.openChannel("sftp");

    channel.connect(10000000);

    ChannelSftp sftp = (ChannelSftp) channel;

    try {

    sftp.cd(sPath);

    //

    } catch (SftpException e) {

    sftp.mkdir(sPath);

    sftp.cd(sPath);

    }

    copyFile(sftp, file, sftp.pwd());

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    session.disconnect();

    channel.disconnect();

    }

    }

    public static void copyFile(ChannelSftp sftp, File file, String pwd) {

    if (file.isDirectory()) {

    File[] list = file.listFiles();

    try {

    try {

    String fileName = file.getName();

    sftp.cd(pwd);

    sftp.mkdir(fileName);

    } catch (Exception e) {

    // TODO: handle exception

    }

    pwd = pwd + "/" + file.getName();

    try {

    sftp.cd(file.getName());

    } catch (SftpException e) {

    // TODO: handle exception

    e.printStackTrace();

    }

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    for (int i = 0; i < list.length; i++) {

    copyFile(sftp, list[i], pwd);

    }

    } else {

    try {

    sftp.cd(pwd);

    } catch (SftpException e1) {

    // TODO Auto-generated catch block

    e1.printStackTrace();

    }

    InputStream instream = null;

    OutputStream outstream = null;

    try {

    outstream = sftp.put(file.getName());

    instream = new FileInputStream(file);

    byte b[] = new byte[1024];

    int n;

    try {

    while ((n = instream.read(b)) != -1) {

    outstream.write(b, 0, n);

    }

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    } catch (SftpException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } finally {

    try {

    outstream.flush();

    outstream.close();

    instream.close();

    } catch (Exception e2) {

    // TODO: handle exception

    e2.printStackTrace();

    }

    }

    }

    }

    }

    展开全文
  • import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpException; ...import java.io.File; import ja...
    
    import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelSftp;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.Session;
    import com.jcraft.jsch.SftpException;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Vector;
    
    
    public class SftpClientUtil {
    
    
    
        /**
         * 密码方式登录 读取指定目录文件
         *
         * @param ip
         * @param user
         * @param psw
         * @param port
         */
        public static  Session sshSftpReadFile(String ip, String user, String psw, int port) {
            Session session = null;
            JSch jsch = new JSch();
            try {
                if (port <= 0) {
                    // 连接服务器,采用默认端口
                    session = jsch.getSession(user, ip);
                } else {
                    // 采用指定的端口连接服务器
                    session = jsch.getSession(user, ip, port);
                }
    
                // 如果服务器连接不上,则抛出异常
                if (session == null) {
                    throw new Exception("session is null");
                }
    
                // 设置登陆主机的密码
                session.setPassword(psw);// 设置密码
                // 设置第一次登陆的时候提示,可选值:(ask | yes | no)
                session.setConfig("StrictHostKeyChecking", "no");
                // 设置登陆超时时间
                session.connect(300000);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        return session;
        }
    
        /**
         * 密码方式登录 上传指定目录文件
         *
         * @param ip
         * @param user
         * @param psw
         * @param port
         */
        public static File sshSftpUpLoadFile(String ip, String user, String psw, int port, String sPath,File file) {
            Session session = null;
            File folderToScan = null;
            JSch jsch = new JSch();
            try {
                if (port <= 0) {
                    // 连接服务器,采用默认端口
                    session = jsch.getSession(user, ip);
                } else {
                    // 采用指定的端口连接服务器
                    session = jsch.getSession(user, ip, port);
                }
    
                // 如果服务器连接不上,则抛出异常
                if (session == null) {
                    throw new Exception("session is null");
                }
    
                // 设置登陆主机的密码
                session.setPassword(psw);// 设置密码
                // 设置第一次登陆的时候提示,可选值:(ask | yes | no)
                session.setConfig("StrictHostKeyChecking", "no");
                // 设置登陆超时时间
                session.connect(300000);
    
                upLoadFile(session,file,sPath);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return folderToScan;
        }
    
        public static    Map<String, InputStream > readFile(Session session, String sPath) {
    
            Channel channel = null;
            Map<String, InputStream > stringHashMap  =new HashMap<>();
            try {
                channel = (Channel) session.openChannel("sftp");
                channel.connect(10000000);
                ChannelSftp sftp = (ChannelSftp) channel;
                try {
                    sftp.cd(sPath);
    
                } catch (SftpException e) {
    
                    sftp.mkdir(sPath);
                    sftp.cd(sPath);
    
                }
                Vector<ChannelSftp.LsEntry>  listFiles = sftp.ls(sftp.pwd());
                for (ChannelSftp.LsEntry file : listFiles)
                {
                    String fileName = file.getFilename();
                    try
                        {
                            InputStream    inputStream = sftp.get(sftp.pwd() + "/" + fileName);
    
                            stringHashMap.put(fileName,inputStream);
                        }
                        catch (SftpException e)
                        {
                            e.printStackTrace();
                        }
    
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
            return stringHashMap;
        }
    
    
        public static void upLoadFile(Session session,  File file , String sPath) {
    
            Channel channel = null;
            try {
                channel = (Channel) session.openChannel("sftp");
                channel.connect(10000000);
                ChannelSftp sftp = (ChannelSftp) channel;
                try {
                    sftp.cd(sPath);
                    //
                } catch (SftpException e) {
    
                    sftp.mkdir(sPath);
                    sftp.cd(sPath);
    
                }
                copyFile(sftp, file, sftp.pwd());
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                session.disconnect();
                channel.disconnect();
            }
        }
    
        public static void copyFile(ChannelSftp sftp, File file, String pwd) {
    
            if (file.isDirectory()) {
                File[] list = file.listFiles();
                try {
                    try {
                        String fileName = file.getName();
                        sftp.cd(pwd);
                        sftp.mkdir(fileName);
                    } catch (Exception e) {
                        // TODO: handle exception
                    }
                    pwd = pwd + "/" + file.getName();
                    try {
    
                        sftp.cd(file.getName());
                    } catch (SftpException e) {
                        // TODO: handle exception
                        e.printStackTrace();
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                for (int i = 0; i < list.length; i++) {
                    copyFile(sftp, list[i], pwd);
                }
            } else {
    
                try {
                    sftp.cd(pwd);
    
                } catch (SftpException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                InputStream instream = null;
                OutputStream outstream = null;
                try {
                    outstream = sftp.put(file.getName());
                    instream = new FileInputStream(file);
    
                    byte b[] = new byte[1024];
                    int n;
                    try {
                        while ((n = instream.read(b)) != -1) {
                            outstream.write(b, 0, n);
                        }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
    
                } catch (SftpException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } finally {
                    try {
                        outstream.flush();
                        outstream.close();
                        instream.close();
    
                    } catch (Exception e2) {
                        // TODO: handle exception
                        e2.printStackTrace();
                    }
                }
            }
        }
    
    }
    
    展开全文
  • 导读:在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件。本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接。一、什么是SFTPSFTP是一个安全...

    导读:在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件。本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接。

    a3d9a3237820e9dcf7958ebd8aca73fe.png

    一、什么是SFTP?

    SFTP是一个安全文件传送协议,可以为传输文件提供一种安全的加密方法。SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式。SFTP是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

    二、什么是Jsch以及它的作用?

    Jsch是一个纯粹的用java实现SSH功能的java library。如果要知道Jsch的功能需先了解一下SSH。SSH是一个安全协议,用来在不同系统或者服务器之间进行安全连接,在连接和传送数据的过程中会进行加密。SSH一般是基于客户端的或者Linux命令行,比如window同过OpenSSH、putty等客户端的工具,在linux上可以通过ssh username@host命令进行连接。但是如果在Java中如何实现SSH呢?这时候便是通过JSCH来实现此的功能。

    85f6597ebdbfa4869dd9f402ac096d95.png

    三、JSCH的依赖

    com.jcraftjsch0.1.51

    四、Jsch详解

    1、Jsch提供了四种认证机制:

    • password 密码方式
    • publickey(DSA,RSA) 公私钥方式
    • keyboard-interactive
    • gss-api-with-mic

    常见的认证方式为password认证,但是本文接下来主要讨论基于publickey认证。对于后面两种认证方式感兴趣的朋友可以去查阅相关资料,本文将不做讨论。

    2、配置SSH免密步骤概述

    1. 在linux下执行ssh-keygen -t rsa 生成一对对应公私钥。
    2. 把公钥复制到将要连接的目标服务器上,放到对应用户的.ssh目录下。
    3. 进入到.ssh中:cd ~/.ssh,并公钥导入到authorized_keys信任列表:cat 公钥 >> authorized_key
    4. 更新权限:chmod 600 authorized_keys,自此SSH免密登录配置完成。
    a8cd2cefa10b676a36ad8e53224b5d37.png

    3、Jsch基于publickey认证Demo

    //从配置文件中读取 目标服务器ip、端口、用户名、私钥路径String ftpHost = prop.getProperty("downloadHost");String port = prop.getProperty("downloadftpPort");String ftpUserName = prop.getProperty("downloadUserName");String priKeyBasePath = prop.getProperty("priBaseKeyPath");//建立JSch对象JSch jsch = new JSch();Session session = null;ChannelSftp channelSftp = nulltry{ //添加私钥 jsch.addIdentity(priKeyBasePath); session=jsch.getSession(userName, hostIp, port); Properties sessionConfig = new Properties(); //SSH 公钥检查机制 no、ask、yes sessionConfig.put("StrictHostKeyChecking
    展开全文
  • 导读:在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件。本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接。一、什么是SFTPSFTP是一个安全...

    导读:在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件。本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接。

    35f10b9964ef68279f58b830b1207fa8.png

    一、什么是SFTP?

    SFTP是一个安全文件传送协议,可以为传输文件提供一种安全的加密方法。SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式。SFTP是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

    二、什么是Jsch以及它的作用?

    Jsch是一个纯粹的用java实现SSH功能的java library。如果要知道Jsch的功能需先了解一下SSH。SSH是一个安全协议,用来在不同系统或者服务器之间进行安全连接,在连接和传送数据的过程中会进行加密。SSH一般是基于客户端的或者Linux命令行,比如window同过OpenSSH、putty等客户端的工具,在linux上可以通过ssh username@host命令进行连接。但是如果在Java中如何实现SSH呢?这时候便是通过JSCH来实现此的功能。

    e09626661538b2132142ef5eab800153.png

    三、JSCH的依赖

    com.jcraftjsch0.1.51

    四、Jsch详解

    1、Jsch提供了四种认证机制:

    • password 密码方式
    • publickey(DSA,RSA) 公私钥方式
    • keyboard-interactive
    • gss-api-with-mic

    常见的认证方式为password认证,但是本文接下来主要讨论基于publickey认证。对于后面两种认证方式感兴趣的朋友可以去查阅相关资料,本文将不做讨论。

    2、配置SSH免密步骤概述

    1. 在linux下执行ssh-keygen -t rsa 生成一对对应公私钥。
    2. 把公钥复制到将要连接的目标服务器上,放到对应用户的.ssh目录下。
    3. 进入到.ssh中:cd ~/.ssh,并公钥导入到authorized_keys信任列表:cat 公钥 >> authorized_key
    4. 更新权限:chmod 600 authorized_keys,自此SSH免密登录配置完成。
    a359304a50887105b85a24fb4a7d3422.png

    3、Jsch基于publickey认证Demo

    //从配置文件中读取 目标服务器ip、端口、用户名、私钥路径String ftpHost = prop.getProperty("downloadHost");String port = prop.getProperty("downloadftpPort");String ftpUserName = prop.getProperty("downloadUserName");String priKeyBasePath = prop.getProperty("priBaseKeyPath");//建立JSch对象JSch jsch = new JSch();Session session = null;ChannelSftp channelSftp = nulltry{ //添加私钥 jsch.addIdentity(priKeyBasePath); session=jsch.getSession(userName, hostIp, port); Properties sessionConfig = new Properties(); //SSH 公钥检查机制 no、ask、yes sessionConfig.put("StrictHostKeyChecking
    展开全文
  • 在做项目过程中,需要与其他系统做对接,其中涉及到从SFTP服务器上获取数据,那Java如何实现这一过程?下面就让学习啦小编给大家...Java中可以通过使用JSch来连接到sshd 服务器上,并进行文件的下载删除上传等操作。...
  • 原因:自己写的sftp上传工具类的获取sftp连接的方法是用了@postconstruct注解,...但是测试环境是通过定时任务发起的上传文件请求 容器启动的时候有sftp连接 到真正上传时连接早已经断开 解决方案:将获取sftp连接的方...
  • 你确定吗? 您的JDK有一个包含KeyPairGenerator类的JAR文件(见下文)?...您的JAVA_HOME已设置?根据findJAR.com,KeyPairGenerator类包含在这些JAR文件中:rt.jarorg.osgi.foundation-1.0.0.jarorg.osgi.foundat...
  • 在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件。本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接。一、什么是SFTPSFTP是一个安全文件传送...
  • java访问linux;通过linux主机ip,端口,用户名,密码,获取linux链接,输入文件路径可批量的下载linux文件,mian函数为测试代码
  • 导读:在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件。本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接。一、什么是SFTPSFTP是一个安全...
  • //从远程获取文件 例如: scpClient.put("D:\\localTest.txt", "/home/bill/"); 需要注意的是windows的本地目录要用双斜杠来分隔目录。 scpClient.put("/home/bill/remoteTest.txt", "D:\\"); 4> sftp 首先...
  • 目录是一种能够快速、有效地帮助读者了解文档或书籍主要内容...文档已设置大纲级别,通过域代码生成目录使用工具:Free Spire.Doc for Java (免费版)工具获取途径1:通过官网下载jar文件包,解压并导入jar文件。工...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • 数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...
  • 我正在使用jsch 0.1.54,并且正在尝试通过SFTP访问FTP服务器。 一切正常,我可以转到所需的目录,但是当我使用执行channel.ls(“ *”);的模式获取文件时; 我只有第一个匹配项,而下一个匹配项是“句柄关闭 ”,但...
  • 数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...
  • 数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...
  • 需求要求每天定时从服务器获取文件解析,使用FTP连接时报错 org.apache.commons.net.MalformedServerReplyException: Could not parse response code. Server Reply: SSH-2.0-OpenSSH_6.6.1 原因是FTPClient不支持...
  • FNS客户端-源码

    2021-02-18 05:28:40
    SWIM FNS JMS参考实现(FnsClient) 概述 系统范围信息服务(SWIM)联邦NOTAM系统(FNS)Java消息服务... FilClient:通过SFTP获取FIL文件。 NotamDb:提供创建,放置和查询NOTAM数据库的所有方法。 支持H2和Postg
  • 第一种:通过Linux图形界面进行修改(强烈推荐) 进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> ...
  • 思维导图 和java相关的 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) 构建中小型互联网企业架构(干货) ...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

java通过sftp获取文件

java 订阅