Jsch远程连接服务器的各种操作完整代码

这段代码展示了如何使用Jsch库在Java中建立SSH连接到远程服务器,并执行SFTP操作,如上传文件、检查连接状态、关闭连接等。它还包含了读取和处理本地及远程文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.cmcc.servlet;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import org.apache.commons.lang3.SystemUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;

public class Ftp {
    // 打印log日志
    public static final Log logger = LogFactory.getLog(Ftp.class);
    public static Date last_push_date = null;
    public Session sshSession;
    public ChannelSftp channel;
    public static String fileName;
    public static ThreadLocal<Ftp> sftpLocal = new ThreadLocal<Ftp>();

    public Ftp(String host, int port, String username, String password)
            throws Exception {
        JSch jsch = new JSch();
        jsch.getSession(username, host, port);
        // 根据用户名,密码,端口号获取session
        sshSession = jsch.getSession(username, host, port);
        sshSession.setPassword(password);
        // 修改服务器/etc/ssh/sshd_config 中 GSSAPIAuthentication的值yes为no,解决用户不能远程登录
        sshSession.setConfig("userauth.gssapi-with-mic", "no");
        // 为session对象设置properties,第一次访问服务器时不用输入yes
        sshSession.setConfig("StrictHostKeyChecking", "no");
        sshSession.connect();
        // 获取sftp通道
        channel = (ChannelSftp) sshSession.openChannel("sftp");
        channel.connect();
        logger.info("连接ftp成功!" + sshSession);
    }

    /**
     * 是否已连接
     *
     * @return
     */
    public boolean isConnected() {
        return null != channel && channel.isConnected();
    }

    /**
     * 获取本地线程存储的sftp客户端
     *
     * @return
     * @throws Exception
     */
    public static Ftp getSftpUtil(String host, int port, String username,
            String password) throws Exception {
        // 获取本地线程
        Ftp sftpUtil = sftpLocal.get();
        if (null == sftpUtil || !sftpUtil.isConnected()) {
            // 将新连接防止本地线程,实现并发处理
            sftpLocal.set(new Ftp(host, port, username, password));
        }
        return sftpLocal.get();
    }

    /**
     * 释放本地线程存储的sftp客户端
     */
    public static void release() {
        if (

自己写的远程连接器的源代码。吐血奉献。 =================已知的BUG================= 1、远程桌面大小小于窗口大小,适应屏幕后将会出现边界无法点击的问题,缩放一下窗口即可恢复 2、分组管理、密码变更、网页监控功能暂不能使用 =================1.1.8版本变动================= 1、修复二处BUG 2、调整了数据加密格式,1.1.8以前的版本的数据需要使用数据转换工具将旧数据转换为新数据方能正常使用 =================1.1.7版本变动================= 1、新增 快速连接远程桌面功能 =================1.1.6版本变动================= 1、新增三个功能 映射硬盘:映射本地硬盘至服务器 截屏:快速截屏并保存到程序的screens目录下(仅载取远程桌面部分) C0模式:当服务器的两个远程桌面全部登陆完后,可以使用C0模式连接服务器的控制台,相当于mstsc /admin 2、优化算法,修正一些BUG =============================================== 注:本程序需要.net 3.5环境支持。 注:若适应大小后出现边界位置无法点击的情况,请双击主窗口的标题栏二次。 注:因为时间较紧张,本程序暂时没有制作操作手册,请大家自己摸索,在此先说抱歉。 =====================功能说明========================== 多窗口远程桌面连接器,主要功能是作为windows远程桌面连接器。主要功能如下: 1、支持windows远程桌面,ssh登陆,telnet登陆 2、支持服务器(设备)信息加密保存, 3、支持Excel批量导入 4、支持服务器信息导出至RDP文件 5、内置浏览器,支持访问各类web界面的登陆方式 6、支持服务器资料网络同步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值