HOWTO · Java
Java で SSH 接続を作成する
このチュートリアルでは、JSch と Apache Mina SSHD ライブラリを使用して Java で SSH 接続を作成する方法について説明します。
Secure Shell または Secure Socket Shell とも呼ばれる SSH は、セキュリティで保護された接続を介して別のコンピューターに接続できるようにするネットワーク プロトコルです。
今日のチュートリアルでは、SSH 接続を開く方法について説明し、JSch と Apache Mina SSHD を使用して SSH 接続を作成する方法を示します。
Java で SSH 接続を作成する
いろいろな方法がありますが、≪JSch≫と≪Apache Mina SSHD≫を使うのが一般的ですので、一つ一つ学んでいきましょう。
方法 1: JSch を使用して Java で SSH 接続を作成する
JSch は Pure Java で書かれた SSH2 の実装です。 このライブラリを使用すると、SSHD サーバーに接続できます。 また、X11 転送、ポート転送、ファイル転送なども使用できます。
以下の例では、JSch を使用して単純な SSH 接続を作成します。
コード例:
// Importing necessary packages
import com.jcraft.jsch.*;
import java.io.InputStream;
public class JavaJSCH {
public static void main(String[] args) {
// Organizing all necessary elements for authenticating
String MyHost = "test.rebex.net";
String User = "demo";
String Password = "password";
try {
// Configuring
java.util.Properties Config = new java.util.Properties();
// Disable the 'StrictHostKeyChecking'
Config.put("StrictHostKeyChecking", "no");
// Declaring a JSch object
JSch Jsch = new JSch();
// Creating a session
Session MySession = Jsch.getSession(User, MyHost, 22);
// Setting the session password
MySession.setPassword(Password);
// Configuring the session
MySession.setConfig(Config);
// Connecting the session
MySession.connect();
System.out.println("Successfully Connected !!!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
出力:
Successfully Connected !!!
方法 2: Apache Mina SSHD を使用して Java で SSH 接続を作成する
Apache Mina SSHD は、SSH プロトコルを使用してサーバーとの接続を作成するための別のライブラリです。 このライブラリも純粋な Java で記述されており、ライブラリは主に Apache MINA に基づいています。
以下の例では、Apache Mina SSHD を使用して単純な SSH 接続を作成します。
コード例:
// Importing necessary packages
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.example.reverser.ReverseProtocolHandler;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class JavaSSHD {
// Specifying the PORT
private static final int PORT = 8080;
public static void main(String[] args) throws Exception {
// Creating an acceptor object
NioSocketAcceptor TheAcceptor = new NioSocketAcceptor();
// Preparing the configuration
TheAcceptor.getFilterChain().addLast("logger", new LoggingFilter());
TheAcceptor.getFilterChain().addLast(
"codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
// Binding all necessary things
TheAcceptor.setHandler(new ReverseProtocolHandler());
TheAcceptor.bind(new InetSocketAddress(PORT));
System.out.println("Listening on port " + PORT);
}
}
上記の例は、ポートのリストを提供するサーバー プログラムの基本レベルを示しています。 上記のコード例を実行すると、コンソールに以下の出力が表示されます。
出力:
Listening on port 8080