需求:java代碼 須要將某個文件 傳輸到另一臺機器上 java
方式1:在另一臺機器上也部署一個java web或其它client來配合傳輸 linux
方式2:利用linux的scp命令直接傳輸 web
顯然是第二種方式 方便的多 shell
但問題是 第二種是同過ssh的方式進行安全驗證,經過驗證也有兩種方式 一種是 安裝證書的方式,還有一種是輸入密碼的方式,安裝總數很差控制也太過呆板 程序也沒法掌控太依賴環境。 安全
咱們能夠執行shell,可是scp命令沒法把密碼用戶名一塊兒帶上執行,這裏咱們就藉助於 服務器
Ganymed SSH-2 for Java是用純Java實現SSH-2協議的一個包。能夠利用它直接在Java程序中鏈接SSH服務器。Ganymed SSH-2支持SSH對話(遠程命令執行和shell訪問),本地和遠程端口轉發,本地數據流轉發,X11轉發和SCP。這些都沒有依賴任何JCE provider,並且全部這些都包含加密的功能。 ide
代碼示例 加密
Connection conn = new Connection(remote); conn.connect(); boolean isAuthenticated = conn.authenticateWithPassword(user,pw); if (isAuthenticated == false) {throw new IOException("Authentication failed.");} SCPClient client = new SCPClient(conn); client.put(theFile, remoteDir, "0644"); conn.close();
remote 是 IP,user是用戶名,pw是密碼 spa