java:ssh连接服务器,实现本地文件上传和下载

1.连接至服务器:ssh [email protected] -p 5555

   下载文件:scp -r [email protected]:/ccc(服务器路径,文件夹下所有文件)  /path(本地路径)

   上传文件:scp /ccc(本地文件路径)

2.文件上传:

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Vector;

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

public class Test {
    public static void main(String[] args) {
        try {
            sshSftp("10.10.17.19", "lenovo", "123456", 5555);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void sshSftp(String ip, String user, String psw ,int port) throws Exception{
        Session session = null;
        ChannelSftp channel = null;

        JSch jsch = new JSch();

        if(port <=0){
            //连接服务器,采用默认端口
            session = jsch.getSession(user, ip);
        }else{
            //采用指定的端口连接服务器
            session = jsch.getSession(user, ip ,port);
        }

        //如果服务器连接不上,则抛出异常
        if (session == null) {
            throw new Exception("session is null");
        }

        //设置第一次登陆的时候提示,可选值:(ask | yes | no)
        session.setConfig("StrictHostKeyChecking", "no");
        //设置登陆主机的密码
        session.setPassword(psw);//设置密码   

        //设置登陆超时时间
        session.connect();

        try {
            //创建sftp通信通道
            channel = (ChannelSftp)           session.openChannel("sftp");
            channel.connect(1000);
            ChannelSftp sftp = (ChannelSftp) channel;

            //进入服务器指定的文件夹
            sftp.cd("1047");

            //列出服务器指定的文件列表
            Vector v = sftp.ls("*.txt");
            for(int i=0;i<v.size();i++){
                System.out.println(v.get(i));
            }

            //以下代码实现从本地上传一个文件到服务器,如果要实现下载,对换以下流就可以了
            OutputStream outstream = sftp.put("666666666.txt");
            InputStream instream = new FileInputStream(new File("c:/print.txt"));

            byte b[] = new byte[1024];
            int n;
            while ((n = instream.read(b)) != -1) {
                outstream.write(b, 0, n);
            }

            outstream.flush();
            outstream.close();
            instream.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            session.disconnect();
            channel.disconnect();
        }
    }
}
    

3.文件下载:

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Vector;

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

public class Test2 {
    public static void main(String[] args) {
        try {
            sshSftp("10.10.17.19", "lenovo", "123456", 5555);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void sshSftp(String ip, String user, String psw ,int port) throws Exception{
        Session session = null;
        ChannelSftp channel = null;

        JSch jsch = new JSch();

        if(port <=0){
            //连接服务器,采用默认端口
            session = jsch.getSession(user, ip);
        }else{
            //采用指定的端口连接服务器
            session = jsch.getSession(user, ip ,port);
        }

        //如果服务器连接不上,则抛出异常
        if (session == null) {
            throw new Exception("session is null");
        }

        //设置第一次登陆的时候提示,可选值:(ask | yes | no)
        session.setConfig("StrictHostKeyChecking", "no");
        //设置登陆主机的密码
        session.setPassword(psw);//设置密码   

        //设置登陆超时时间
        session.connect();

        try {
            //创建sftp通信通道
            channel = (ChannelSftp) session.openChannel("sftp");
            channel.connect(1000);
            ChannelSftp sftp = (ChannelSftp) channel;

            //进入服务器指定的文件夹
            sftp.cd("1047");

            //列出服务器指定的文件列表
            Vector v = sftp.ls("*.txt");
            for(int i=0;i<v.size();i++){
                System.out.println(v.get(i));
            }

            //下载
            InputStream instream = sftp.get("666666666.txt");
            OutputStream outstream = new FileOutputStream(new File("c:/print.txt"));

            byte b[] = new byte[1024];
            int n;
            while ((n = instream.read(b)) != -1) {
                outstream.write(b, 0, n);
            }

            outstream.flush();
            outstream.close();
            instream.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            session.disconnect();
            channel.disconnect();
        }
    }
}

原文地址:https://www.cnblogs.com/kuangzhisen/p/8662816.html

时间: 2024-08-11 22:39:27

java:ssh连接服务器,实现本地文件上传和下载的相关文章

PHPstorm设置连接FTP,进行文件上传、下载、比较

                                             内容转载自:http://www.cnblogs.com/jikey/p/3486621.html   如何在Webstorm/Phpstorm中设置连接FTP, 并快速进行文件比较,上传下载,同步等操作 补充: 1. 打开Remote Host窗口的方式: Tools | Deployment | Browse Remote Host 或 View | Tool Windows | Remote Host

java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息

1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html https://www.cnblogs.com/longyg/archive/2012/06/25/2561332.html https://www.cnblogs.com/qdwyg2013/p/5650764.html#top 引入jar包的maven依赖如下所示:

将本地文件上传到指定的服务器(HttpWebRequest方法)

将本地文件上传到指定的服务器(HttpWebRequest方法),通过文件流,带文件名,同文件一同上传的表单文本域及值. 1 ///<summary> 2 /// 将本地文件上传到指定的服务器(HttpWebRequest方法) 3 /// </summary> 4 /// <param name="address">文件上传到的服务器</param> 5 /// <param name="fileNamePath&quo

JavaScript进阶 九 JS实现本地文件上传至阿里云服务器

JS实现本地文件上传至阿里云服务器 前言 在前面的博客< JavaScript进阶(八)JS实现图片预览并导入服务器功能>(点击查看详情)中,实现了JS将本地图片文件预览并上传至阿里云服务器的操作.这次需要实现将本地打包好的文件上传至阿里云服务器.使用前面的图片文件上传方法无法完成此操作.操作界面如下: 思路 本地与服务端传输文件的格式应该是熟悉的Base64格式.首先需要将本地文件转换为Base64格式,传输至服务端后,在服务端再将Base64格式的文件转换为原始文件. 源码解析 控制器 /

C# winform把本地文件上传到服务器上,和从服务器上下载文件

昨天在做项目过程中遇到需要把本地文件上传到服务器上的问题,在这里记录一下,方便大家互相学习! /// <summary> /// 上传文件方法/// </summary> /// <param name="filePath">本地文件所在路径(包括文件)</param> /// <param name="serverPath">文件存储服务器路径(包括文件)</param> public voi

scp. -本地文件上传服务器

scp 命令可以将本地文件上传服务器,或者将服务器上的文件下载到本地, 1.  上传服务器: scp [本地文件目录]  [服务器用户名]@[服务器名]:/[服务器上文件路径] 比如 scp /Documents/test.txt [email protected]服务器名:/home/optadmin/tmp/   将文件test.txt文件放到服务器上的tmp目录下 2.  下载本地 将服务器上的文件下载到本地时,只需要将上述 的两个路径互换即可 比如 scp  [email protect

Java实现FTP文件上传与下载

实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 package com.cloudpower.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import sun.net.Telnet

C# 之 FTP服务器中文件上传与下载(四)

        通过上一篇博客<C# 之 FTP服务器中文件上传与下载(三)>,我们已经实现将文件从我们创建的FTP服务器中下载到本地.今天就最后给大家讲解一下怎么对FTP中的文件进行重命名和删除操作. 首先在前台添加两个重命名和删除的按钮 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Defaul

Java 文件上传与下载、email

1. 文件上传与下载 1.1 文件上传 文件上传,要点: 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data 手动实现文件上传 <body> <form name="frm_test"