java 通过ssh连接服务器上传,下载,删除文件

java连接远程主机的方式有多种,这里和大家分享的是通过ssh方式连接远程主机,使用的是ganymed-ssh2-build210.jar包,资源在这里

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。

以下为用scp上传,下载文件。sftp删除文件的实例

package com.ssh2;

import java.io.IOException;

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.SFTPv3Client;

public class SSHUtil {

 private static SCPClient scp;
 private static Connection conn;
 
 private static String SERVERIP = "127.0.0.1"; // 服务器ip,设置在配置文件中
 private static String USERNAME = "root"; // 服务器用户名, 设置在配置文件中
 private static String PASSWORD = "123456"; // 服务器密码,设置在配置文件中
 private static String REMOTEDIRPATH = "/var/www/test/"; // 上传的远程服务器目录,设置在配置文件中
 
 /*
  * 获取ssh连接
  */
 public static void getConnect(String serverIp, String userName, String password){
   
  try {
   conn = new Connection(serverIp);
   conn.connect();
   conn.authenticateWithPassword(userName, password);
  } catch (IOException e) {
   e.printStackTrace();
  }
  
 }
 
 public static SCPClient getScp(){
  scp = new SCPClient(conn);
  return scp;
 }
 
 public static void getConnAndScp(){
  getConnect(SERVERIP, USERNAME, PASSWORD);
  getScp();
 }
 
 /**
  * 上传文件
  * @param localFile 本地路径
  * @param remoteTargetDirectory 远程路径
  * @return
  */
 public static boolean upload(String localFile ,String remoteTargetDirectory){
  boolean flag = false;
  try {
   getConnAndScp();
   scp.put(localFile, remoteTargetDirectory);
   flag = true;
   conn.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return flag;
 }
 
 /**
  * 下载文件
  * @param remoteFile 远程服务器文件路径
  * @param target 下载之后存放文件的目录
  */
 public static void download(String remoteFile, String target){
  try {
   getConnAndScp();
   scp.get(remoteFile, target);
   conn.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 /**
  * 删除文件
  * @param fileName 文件名称
  */
 public static void remote(String fileName){
  try {
   getConnect(SERVERIP, USERNAME, PASSWORD);
   SFTPv3Client sftp = new SFTPv3Client(conn);
   sftp.rm(REMOTEDIRPATH+fileName);
   conn.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 public static void main(String[] args) {
  SSHUtil.upload("c:\\a.jpg", "/var/www/test/");
 }
}

 如有不同想法和意见,欢迎提出

猜你喜欢

转载自blog.csdn.net/u013892290/article/details/80960528