java執行scp(非安裝證書免密碼模式)

需求:java代碼 須要將某個文件 傳輸到另一臺機器上 java

方式1:在另一臺機器上也部署一個java web或其它client來配合傳輸 linux

方式2:利用linux的scp命令直接傳輸 web

顯然是第二種方式 方便的多 shell

但問題是 第二種是同過ssh的方式進行安全驗證,經過驗證也有兩種方式 一種是 安裝證書的方式,還有一種是輸入密碼的方式,安裝總數很差控制也太過呆板 程序也沒法掌控太依賴環境。 安全

咱們能夠執行shell,可是scp命令沒法把密碼用戶名一塊兒帶上執行,這裏咱們就藉助於 服務器

Ganymed SSH-2 for Java ssh

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

相關文章
相關標籤/搜索