一、JSch是Java Secure Channel的縮寫。JSch是一個SSH2的純Java實作。它允許你連接配接到一個SSH伺服器,并且可以使用端口轉發,X11轉發,檔案傳輸等,當然你也可以內建它的功能到你自己的應用程式。
本文隻介紹如何使用JSch實作的SFTP功能。
SFTP是Secure File Transfer Protocol的縮寫,安全檔案傳送協定。可以為傳輸檔案提供一種安全的加密方法。SFTP 為 SSH的一部份,是一種傳輸檔案到伺服器的安全方式。SFTP是使用加密傳輸認證資訊和傳輸的資料,是以,使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術,是以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。
二、需要的依賴包pom.xml
<dependency>
<groupId>jsch</groupId>
<artifactId>jsch</artifactId>
<version>0.1.8</version>
</dependency>
三、sftp的通路,以及實作方式
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.io.*;
import java.util.Properties;
public class SftpFile {
public static void main(String[] args) throws Exception {
//聲明JSCH對象
JSch jSch = new JSch();
//擷取一個Linux會話
Session session = jSch.getSession("root", "10.0.40.98", 22);
//設定登入密碼
session.setPassword("密碼");
//關閉key的檢驗
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
session.setConfig(sshConfig);
//連接配接Linux
session.connect();
//通過sftp的方式連接配接
ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
channel.connect();
//上傳檔案
File file = new File("d:\\1.txt");
InputStream inputStream = new FileInputStream(file);
channel.put(inputStream, "/root/file/2.txt");
//下載下傳檔案
OutputStream out = new FileOutputStream("d:\\4.txt");
channel.get("/root/file/1.txt", out);
//關閉流
inputStream.close();
out.close();
}
}
注意:這裡是弄成sftp的方式,其他方式也可以通過這樣的方式來實作。
四、Jsch中sftp提供的一些api
put(): 檔案上傳
get(): 檔案下載下傳
cd(): 進入指定目錄
ls(): 得到指定目錄下的檔案清單
rename(): 重命名指定檔案或目錄
rm(): 删除指定檔案
mkdir(): 建立目錄
rmdir(): 删除目錄