您的位置:

jsch实现远程文件管理示例的简单介绍

jsch实现远程文件管理示例的简单介绍

更新:

本文目录一览:

  • 1、java如何执行远程服务器上的.sh文件
  • 2、JAVA_JSCH如何远程操作SFTP服务器上的文件?
  • 3、如何用Java实现SSH远程连接?
  • 4、Apache SSHD实现SFTP服务端,客户端访问进行远程文件上传下载
  • 5、jsch实现java sftp上传,在非root用户下出现permission dined异常,

java如何执行远程服务器上的.sh文件

你可以使用JSch

JSch全称是“Java Secure Channel”

是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。同时也是支持执行命令;

以下是大概运行的代码,只是提供大致思路,可以去查官方API和demo

import com.jcraft.jsch.ChannelExec;

import com.jcraft.jsch.ChannelSftp;

import com.jcraft.jsch.ChannelS;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.JSchException;

import com.jcraft.jsch.Session;

import com.jcraft.jsch.SftpATTRS;

import com.jcraft.jsch.SftpException;

.......

try{

Session session = new JSch().getSession(user, ip, port);

session.setPassword(pwd);

session.setConfig("StrictHostKeyChecking", "no");

session.setConfig("userauth.gssapi-with-mic", "no");

session.connect();

ChannelExec exec = (ChannelExec) session.openChannel("exec");

exec.setCommand("ifconfig");//这里是你要执行的命令,部分命令不支持,具体自己执行下

ByteArrayOutputStream bao = new ByteArrayOutputStream();

exec.setOutputStream(bao);

ByteArrayOutputStream baerr = new ByteArrayOutputStream();

exec.setErrStream(baerr);

exec.connect();

while (!exec.isEOF())

;

String errmsg = new String(baerr.toByteArray(), "utf-8");

if (StringUtils.notNull(errmsg)) {

throw new RuntimeException(errmsg);

} else {

System.out.println(new String(bao.toByteArray(), "utf-8"));

}

}catch(Exception e){

    e.printStackTrace();

}finally{

    //关闭session等操作

}

JAVA_JSCH如何远程操作SFTP服务器上的文件?

使用SSH协议进行FTP传输的协议叫SFTP

换言之你的SSH协议一定启用了,那么使用基本linux命令在远端执行即可。

我个人而言,JSCH一般是这样用的:SFTP用于单纯的文件上传,之后直接使用基础ssh协议执行远端linux命令(比如说,移动文件或是重启服务器等等)

至于API的具体使用方式,稍微搜索一下很容易找到,比如这个:

如何用Java实现SSH远程连接?

这还要思路。。。

表单提交到后台,触发方法, 然后调jsch的方法,获取返回信息。 然后return到页面。

搞定!

Apache SSHD实现SFTP服务端,客户端访问进行远程文件上传下载

package jsch;

import java.io.File;

import java.io.FileInputStream;

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;

public class Test {

    protected String host;//sftp服务器ip

    protected String username;//用户名

    protected String password;//密码

    protected String privateKey;//密钥文件路径

    protected String passphrase;//密钥口令

    protected int port = 22;//默认的sftp端口号是22

    /**

     * 获取连接

     * @return channel

     */

    public ChannelSftp connectSFTP() {

        JSch jsch = new JSch();

        Channel channel = null;

        try {

            if (privateKey != null  !"".equals(privateKey)) {

                //使用密钥验证方式,密钥可以使有口令的密钥,也可以是没有口令的密钥

                if (passphrase != null  "".equals(passphrase)) {

                    jsch.addIdentity(privateKey, passphrase);

                } else {

                    jsch.addIdentity(privateKey);

                }

            }

            Session session = jsch.getSession(username, host, port);

            if (password != null  !"".equals(password)) {

                session.setPassword(password);

            }

            Properties sshConfig = new Properties();

            sshConfig.put("StrictHostKeyChecking", "no");// do not verify host key

            session.setConfig(sshConfig);

            // session.setTimeout(timeout);

            session.setServerAliveInterval(92000);

            session.connect();

            //参数sftp指明要打开的连接是sftp连接

            channel = session.openChannel("sftp");

            channel.connect();

        } catch (JSchException e) {

            e.printStackTrace();

        }

        return (ChannelSftp) channel;

    }

    

    /**

     * 上传文件

     * 

     * @param directory

     *            上传的目录

     * @param uploadFile

     *            要上传的文件

     * @param sftp

     */

    public void upload(String directory, String uploadFile, ChannelSftp sftp) {

        try {

            s;

            File file = new File(uploadFile);

            s(new FileInputStream(file), file.getName());

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    /**

     * 下载文件

     * 

     * @param directory

     *            下载目录

     * @param downloadFile

     *            下载的文件

     * @param saveFile

     *            存在本地的路径

     * @param sftp

     */

    public void download(String directory, String downloadFile,

            String saveFile, ChannelSftp sftp) {

        try {

            s;

            s;

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    /**

     * 删除文件

     * 

     * @param directory

     *            要删除文件所在目录

     * @param deleteFile

     *            要删除的文件

     * @param sftp

     */

    public void delete(String directory, String deleteFile, ChannelSftp sftp) {

        try {

            s;

            s;

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    

    public void disconnected(ChannelSftp sftp){

        if (sftp != null) {

            try {

                s;

            } catch (JSchException e) {

                e.printStackTrace();

            }

            s;

        }

    }

}

jsch实现java sftp上传,在非root用户下出现permission dined异常,

这个正常,应该是你当前上传用户在上传位置没有权限造成的,权限应该在服务器端修改

jsch实现远程文件管理示例的简单介绍

本文目录一览: 1、java如何执行远程服务器上的.sh文件 2、JAVA_JSCH如何远程操作SFTP服务器上的文件? 3、如何用Java实现SSH远程连接? 4、Apache SSHD实现SFTP

2023-12-08
jsch实现文件下载(jsch jar包)

本文目录一览: 1、Apache SSHD实现SFTP服务端,客户端访问进行远程文件上传下载 2、如何升级jsch-0.1.53.jar 3、用java实现sftp下载,报2: No such fil

2023-12-08
打造更稳健的SSH Java实现:JCraft的SSH AP

2023-05-18
Java SSH连接远程服务器

2023-05-23
Java读取远程服务器文件

2023-05-19
javascript入门笔记1的简单介绍

2022-11-18
java文件传输,java文件传输工具

2023-01-06
java文件管理,java文件管理器实验报告

2023-01-10
java文件管理,java文件管理器课程设计

2023-01-09
java笔记,尚硅谷java笔记

2022-12-01
python使用笔记23的简单介绍

2022-11-10
c到c语言笔记的简单介绍

2022-11-24
印象笔记记录java学习(Java成长笔记)

2022-11-12
发篇java复习笔记(java课程笔记)

2022-11-09
java包笔记,Java语言包

2022-11-18
java传输文件,java文件传输系统

2023-01-03
使用Java上传文件到Linux服务器

2023-05-22
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
java客户端学习笔记(java开发笔记)

2022-11-14