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
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn