java怎么實(shí)現(xiàn)ssh遠(yuǎn)程訪問

小億
191
2023-09-25 23:32:57
欄目: 編程語言

要實(shí)現(xiàn)SSH遠(yuǎn)程訪問,需要使用Java的SSH庫。以下是使用JSch庫實(shí)現(xiàn)SSH遠(yuǎn)程訪問的示例代碼:

首先,需要在項(xiàng)目中引入JSch庫的依賴。如果使用Maven,可以在pom.xml文件中添加以下依賴:

<dependencies>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
</dependencies>

然后,可以使用以下代碼實(shí)現(xiàn)SSH遠(yuǎn)程訪問:

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
public class SSHExample {
public static void main(String[] args) {
String host = "hostname";
String username = "username";
String password = "password";
int port = 22;
try {
JSch jsch = new JSch();
Session session = jsch.getSession(username, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand("ls -l");
channel.connect();
java.io.InputStream in = channel.getInputStream();
byte[] tmp = new byte[1024];
while (true) {
while (in.available() > 0) {
int i = in.read(tmp, 0, 1024);
if (i < 0) {
break;
}
System.out.print(new String(tmp, 0, i));
}
if (channel.isClosed()) {
if (in.available() > 0) {
continue;
}
System.out.println("Exit Code: " + channel.getExitStatus());
break;
}
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
channel.disconnect();
session.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}

上述代碼中,通過JSch庫創(chuàng)建一個(gè)SSH會(huì)話,并使用會(huì)話執(zhí)行命令(此處示例為執(zhí)行ls -l命令)。將輸出結(jié)果打印到控制臺(tái)并打印命令的退出碼。

請(qǐng)根據(jù)實(shí)際情況替換hostusernamepassword參數(shù)以及命令。確保遠(yuǎn)程服務(wù)器上已經(jīng)安裝了SSH服務(wù),并且可以使用提供的用戶名和密碼進(jìn)行訪問。

0