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’는 순수한 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