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/");
}
}
如有不同想法和意见,欢迎提出