ganymed-ssh2是通過java使用ssh連接服務器的工具庫,先上兩個版本的pom文件配置:
<!--ssh連接linux--> <!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 --> <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>build210</version> </dependency>
<!--ssh連接linux--> <!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 --> <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>262</version> </dependency>
網絡上大部分人使用的還是build210版本,本人之前使用262版本,無奈不想自己寫文件上傳下載代碼,改用了build210版。
這是build210的SCPClient包括的方法,其中包括了文件的下載(get)、文件的上傳(put)使用起來直接調用非常方便:

262版本的SCPClient相比build210缺少了許多方法,只能夠從服務器get文件,但是put方法還需要搭配其他類使用,無法直接上傳文件服務器,可能是將相應的功能移去了其他模塊:

下面是build210版文件上傳、下載案例:
public class ScpOpt { static String ip = "127.0.0.2"; static String LiuxUser = "root"; static String LiuxPawd = "xxxx"; public static void downloadFile() { Connection conn = new Connection(ip); Session session = null;// 打開一個會話 try { conn.connect();//建立連接 boolean login = conn.authenticateWithPassword(LiuxUser, LiuxPawd);//根據用戶名密碼,進行校驗 if (login) { System.out.println("登錄成功"); } else { System.out.println("登錄失敗"); } SCPClient scpClient = conn.createSCPClient(); //從遠程機器獲取文件 scpClient.get("遠程文件/root/docker-install.sh", "本地文件夾"); conn.close(); session.close(); } catch (IOException e) { e.printStackTrace(); } } public static void uploadFile() { Connection conn = new Connection(ip); try {
//建立連接 conn.connect();
//根據用戶名密碼,進行校驗 boolean login = conn.authenticateWithPassword(LiuxUser, LiuxPawd); if (login) { System.out.println("登錄成功"); } else { System.out.println("登錄失敗"); } SCPClient scpClient = conn.createSCPClient();
//上傳文件 scpClient.put("本地文件docker-install.sh", "遠程機器目錄/root/scp"); conn.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { // downloadFile(); uploadFile(); } }