专业的编程技术博客社区

网站首页 > 博客文章 正文

springboot 使用Hutool 的 JschUtil

baijin 2024-11-12 09:36:59 博客文章 2 ℃ 0 评论

windows安装ssh

linux 本身使用ssh 无需安装

一.windows server 2012 R2安装openssh

1.下载

访问Openssh官网并根据操作系统的位数选择合适的安装包

进入官网后,根据操作系统位数选择合适的安装包。不过64位系统也可以支持32位的安装包。我这里系统64位的安装的是32位的安装包。

2.将下载的安装包解压至C:/Program Files/目录下

打开powershell终端,进入包含ssh可执行exe文件的文件夹 cd C:\OpenSSH-Win32\OpenSSH-Win32。

3.安装ssh服务

在powershell终端输入下面指令:

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

复制代码

安装成功后如下所示:

4.配置ssh服务

  1. 在防火墙开启端口22端口号:在powershell中输入以下指令:
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

复制代码

启动ssh服务

net start sshd
复制代码

5.添加环境系统变量

将包含ssh可执行exe文件所在路径(我这里是:C:\Program Files\OpenSSH-Win32\OpenSSH-Win32)添加到环境系统变量中。

最后打开cmd或者powershell,输入ssh出现如下图所示,就代表已经安装成功。

6.设置开机sshd服务开机自启

打开服务

方法一:依次打开“服务器管理器”——》“工具”——》“服务”

方法二:Win+R 输入 services.msc

进入服务列表界面,找到OpenSSH SSH Server服务

将下图中 openssh authentication agent按照上图也进行同样操作。



本身自带ssh服务的windows(例如windows10) 开启ssh服务

1.客户端安装

开始 -> 应用与功能 -> 可选功能 -> 添加功能

列表中有OpenSSH客户端的选项

点击安装OpenSSH客户端

安装之后可使用Windows PowerShell直接使用ssh命令

2.服务端安装

开始 -> 应用与功能 -> 可选功能 -> 添加功能

列表中有OpenSSH服务器的选项

点击安装OpenSSH服务器

服务端安装完之后需要进行一些配置

3.服务端配置

使用管理员身份运行Windows PowerShell

开启SSHD服务

Start-Service sshd
复制代码

设置服务自动启动

Set-Service -Name sshd -StartupType 'Automatic'
复制代码

确认防火墙是否开放

Get-NetFirewallRule -Name *ssh*
复制代码

查看OpenSSH-Server-In-TCP的enable是否为True

配置完成之后其他客户端可使用ssh连接windows,用户名和密码就是windows的用户名和密码

springboot使用

引入hutool

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.4</version>
</dependency>
复制代码

引入 jsch

<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version>
</dependency>
复制代码

使用方式

上传

@Test
void test18() {
//测试目录
    String linuxPath = "/var/file/test/";
    //创建session连接
    Session sessionLinux = JschUtil.getSession("ip", 端口,"用户名", "密码");
// 1.文件操作
    // 建立sftp
    Sftp sftp = JschUtil.createSftp(sessionLinux);
    //进入输入目录
    sftp.cd(linuxPath);
    //文件名称
    String fileName = "Sftp创建文件夹于"+DateUtil.format(new Date(), "yyyy年MM月dd日HH时mm分ss秒");
    //1.创建文件夹
    sftp.mkdir(fileName);
    System.out.println("=========================1.远程文件操作=========================");
    System.out.println(fileName+",文件是否存在?"+sftp.exist(linuxPath+fileName));
    //删除文件
    sftp.delDir(linuxPath+fileName);
    System.out.println(fileName+",文件是否存在?"+sftp.exist(linuxPath+fileName));
    System.out.println();
//2.上传文件
    // 本地新建文件
    System.out.println("=========================2.上传文件操作=========================");
    String localFile = DateUtil.format(new Date(), "yyyy年MM月dd日HH时mm分ss秒")+".txt";
    System.out.println(localFile);
    FileWriter fileWriter = new FileWriter(localFile);
    // 写入内容
    File file = fileWriter.write("123");
    fileWriter.append("追加信息");
    System.out.println(file.getPath());
    sftp.upload(linuxPath, file);
    
    //upload方法
    System.out.println("1.upload方法");
    System.out.println(localFile+",文件是否存在?"+sftp.exist(linuxPath+localFile));
    sftp.delFile(linuxPath+localFile);
    System.out.println(localFile+",文件是否存在?"+sftp.exist(linuxPath+fileName));
    sftp.put(file.getPath(),linuxPath);
    
    //put方法
    System.out.println("2.put方法");
    System.out.println(localFile+",文件是否存在?"+sftp.exist(linuxPath+localFile));
    sftp.delFile(linuxPath+localFile);
    System.out.println(localFile+",文件是否存在?"+sftp.exist(linuxPath+fileName));
    //删除本地文件
    FileUtil.del(file);
}
复制代码

运行结果:

下载

@Test
void test20(){
    Session sessionWindows = JschUtil.getSession("账号", 22,"用户名", "密码");
    Sftp sftp = JschUtil.createSftp(sessionWindows);
    String path = "/C:/test/";
    String fileName = "Sftp创建文件夹于"+DateUtil.format(new Date(), "yyyy年MM月dd日HH时mm分ss秒");

    System.out.println("===========================路径问题===========================");
    try{
        sftp.cd("C:/test");
    }catch (Exception e){
        System.out.println("盘符前未加 / 捕获异常:"+e.toString());
    }

    System.out.println();
    System.out.println("==========================mkdir和mkDirs方法的区别==============");
    try {
        sftp.mkdir(path+ IdUtil.simpleUUID() + "/"+fileName);
    }catch (Exception e){
        System.out.println("创建文件夹异常 (未能递归创建文件):"+e.toString());
    }
    sftp.mkDirs(path+ IdUtil.simpleUUID() + "/"+fileName);
    System.out.println("mkDirs创建文件夹成功!!!");

    System.out.println();
    System.out.println("===========================下载文件=======================");
    sftp.get("/C:/1.exe","D:/aaaaTest/1.exe");
    System.out.println("下载成功");
    sftp.download("/C:/1.exe", new File("D:/aaaaTest/2.exe"));
    System.out.println("下载成功");
}
复制代码

运行结果

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表