JSch简单实现SFTP上传文件到指定服务器

引入依赖:

<!--sftp文件上传-->
<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version>
</dependency>

工具类:

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

import java.io.OutputStream;
import java.util.Properties;

public class FtpUtils {

    /**
     * @Author 陈霄
     * @Description 利用JSch包实现SFTP上传文件
     * @Date 2020-05-27 11:32
     **/
    public static void sshSftp(String ip, int port, String user, String password, byte[] bytes, String fileName) throws Exception {
        Session session;
        ChannelSftp channel = null;

        JSch jsch = new JSch();

        //采用指定的端口连接服务器
        session = jsch.getSession(user, ip, port);
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        // 为Session对象设置properties
        session.setConfig(config);
        // 设置超时
        session.setTimeout(30000);
        //设置登陆主机的密码
        session.setPassword(password);//设置密码
        //设置登陆超时时间
        session.connect();
        OutputStream outstream = null;
        try {
            //创建sftp通信通道
            channel = (ChannelSftp) session.openChannel("sftp");
            channel.connect();
            //以下代码实现从本地上传一个文件到服务器,如果要实现下载,对换以下流就可以了
            outstream = channel.put(fileName);
            outstream.write(bytes);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关流操作
            if (outstream != null) {
                outstream.flush();
                outstream.close();
            }
            session.disconnect();
            if (channel != null) {
                channel.disconnect();
            }
        }
    }
}

实现:

@RequestMapping(value = "/upload")
@ResponseBody
public String fileUpload(MultipartFile file) {
    String ip = "xxx.xxx.x.xxx";
    String user = "administrator";
    String psw = "xxxx";
    try {
        FtpUtils.sshSftp(ip, 22, user, psw, file.getBytes(), file.getOriginalFilename());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "success";
}

服务器安装openSSL:

进入OpenSSH文件夹的cmd

依次执行

1)安装sshd服务

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

2)开放22号端口(如果你在windows关闭了防火墙并配置了入站规则可以不执行如下命令,多执行不影响)

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

3)配置开机自启sshd

sc config sshd start= auto

4)设置你需要上传的根路径
进入目录OpenSSH文件的 sshd_config_default
解开注释并修改成你需要的文件目录
ChrootDirectory D:\upload

5)执行cmd命令启动openSSH

net start sshd

openSSH是免费开源的,大家可以自行下载,也可以去我的上传里面下载

亲测有效,大家放心使用!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬不萌c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值