Java可以通過使用JSch庫來實現SSH遠程訪問。JSch是Java Secure Channel的簡稱,是一個純Java實現的SSH2協議客戶端。
下面是一個簡單的示例代碼,演示如何使用JSch實現SSH遠程訪問:
import com.jcraft.jsch.*;
public class SSHExample {
public static void main(String[] args) {
String host = "your_host";
String username = "your_username";
String password = "your_password";
try {
JSch jsch = new JSch();
// 創建SSH會話
Session session = jsch.getSession(username, host, 22);
session.setPassword(password);
// 關閉主機密鑰檢查,避免連接時出現UnknownHostKey異常
session.setConfig("StrictHostKeyChecking", "no");
// 連接SSH服務器
session.connect();
// 執行遠程命令
ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand("ls -l");
channel.connect();
// 讀取命令輸出
byte[] buffer = new byte[1024];
while (channel.getExitStatus() == -1) {
while (channel.getInputStream().available() > 0) {
int len = channel.getInputStream().read(buffer);
System.out.print(new String(buffer, 0, len));
}
}
// 關閉SSH會話
channel.disconnect();
session.disconnect();
} catch (JSchException | java.io.IOException e) {
e.printStackTrace();
}
}
}
上述代碼通過JSch庫創建了一個SSH會話,并使用用戶名和密碼連接到遠程主機。然后,通過打開一個exec通道執行遠程命令(此處是執行ls -l
命令),并讀取命令輸出。
需要注意的是,使用JSch進行SSH遠程訪問需要在項目中引入JSch庫的依賴。你可以通過將以下代碼添加到項目的Maven配置文件(pom.xml)中來引入JSch庫的依賴:
<dependencies>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>
</dependencies>
請將上述代碼中的your_host
、your_username
和your_password
替換為實際的遠程主機地址、用戶名和密碼。