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

本文目录一览:

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异常,

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

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/160972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-21 01:16
下一篇 2024-11-21 01:16

相关推荐

  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • 北化教务管理系统介绍及开发代码示例

    本文将从多个方面对北化教务管理系统进行介绍及开发代码示例,帮助开发者更好地理解和应用该系统。 一、项目介绍 北化教务管理系统是一款针对高校学生和教职工的综合信息管理系统。系统实现的…

    编程 2025-04-29
  • Python海龟代码简单画图

    本文将介绍如何使用Python的海龟库进行简单画图,并提供相关示例代码。 一、基础用法 使用Python的海龟库,我们可以控制一个小海龟在窗口中移动,并利用它的“画笔”在窗口中绘制…

    编程 2025-04-29
  • Python调字号: 用法介绍字号调整方法及示例代码

    在Python中,调整字号是很常见的需求,因为它能够使输出内容更加直观、美观,并且有利于阅读。本文将从多个方面详解Python调字号的方法。 一、内置函数实现字号调整 Python…

    编程 2025-04-29
  • 选择大容量免费云盘的优缺点及实现代码示例

    云盘是现代人必备的工具之一,云盘的容量大小是选择云盘的重要因素之一。本文将从多个方面详细阐述使用大容量免费云盘的优缺点,并提供相应的实现代码示例。 一、存储空间需求分析 不同的人使…

    编程 2025-04-29
  • Python樱花树代码简单

    本文将对Python樱花树代码进行详细的阐述和讲解,帮助读者更好地理解该代码的实现方法。 一、简介 樱花树是一种图形效果,它的实现方法比较简单。Python中可以通过turtle这…

    编程 2025-04-28
  • Corsregistry.a的及代码示例

    本篇文章将从多个方面详细阐述corsregistry.a,同时提供相应代码示例。 一、什么是corsregistry.a? corsregistry.a是Docker Regist…

    编程 2025-04-28
  • Python Flask系列完整示例

    Flask是一个Python Web框架,在Python社区中非常流行。在本文中,我们将深入探讨一些常见的Flask功能和技巧,包括路由、模板、表单、数据库和部署。 一、路由 Fl…

    编程 2025-04-28
  • Python大神作品:让编程变得更加简单

    Python作为一种高级的解释性编程语言,一直被广泛地运用于各个领域,从Web开发、游戏开发到人工智能,Python都扮演着重要的角色。Python的代码简洁明了,易于阅读和维护,…

    编程 2025-04-28

发表回复

登录后才能评论