sshリモートアクセスをjavaで実現するには

SSH リモートアクセスを実現するには、Java の SSH ライブラリを使用する必要があります。SSH リモートアクセスを実現するための JSch ライブラリを使用したサンプルコードを以下に示します。

まず、JSch ライブラリをプロジェクトに依存関係として追加する必要があります。Maven を使用している場合は、pom.xml ファイルに以下の依存関係を追加できます。

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

続いてSSHリモートアクセスの実装には以下のコードを使用できます

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ライブラリを使用してSSHセッションを作成し、セッションを使用してコマンドを実行します(この例ではls -lコマンドを実行します)。結果出力をコンソールに印刷し、コマンドの終了コードを印刷します。

ホスト、ユーザー名、パスワードとコマンドのパラメータを適切に置き換えてください。また、SSHサービスがリモートサーバーにインストールされていて、指定されたユーザー名とパスワードでアクセスできることを確認してください。

bannerAds