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(); } } }