Java/Tip & Tech2009. 12. 22. 23:17

SSHTools는 Java로 SSH(Secure SHell) 응용프로그램을 만들 수 있도록 해주는 공개 라이브러리입니다.

이것을 이용하면 SSH Terminal, SSH VNC client, SFTP client, SSH 데몬 등을 Java로 구현할 수 있습니다.

프로젝트 도중 SSHTools를 사용할 일이 생겨서 만들어본 간단한 예제를 올려봅니다.

먼저 SSHTools 배포 사이트에 가서 라이브러리 파일을 다운받습니다.


SSHTools 다운로드 바로가기 ==> http://sourceforge.net/projects/sshtools/

SSHTools에서는 Apache commons-logging 라이브러리를 사용하기 때문에 이역시 다운 받도록 합니다.

아래의 소스는 SSH 서버에 접속하여 인증을 시도하고 결과를 알려주는 소스입니다.

테스트 해보시려면 main 메소드 안에 있는 host, username, password 값을 수정하고 실행하면 됩니다.


import java.io.IOException;

import com.sshtools.j2ssh.SshClient;
import com.sshtools.j2ssh.authentication.AuthenticationProtocolState;
import com.sshtools.j2ssh.authentication.PasswordAuthenticationClient;
import com.sshtools.j2ssh.transport.IgnoreHostKeyVerification;

public class TestSshAuthentication {
	public static void main(String[] args) {
		String host = "localhost";
		String username = "username";
		String password = "password";

		SshClient sshClient = null;
		PasswordAuthenticationClient authentication = null;

		try {
			sshClient = new SshClient();
			sshClient.setSocketTimeout(20000);
			sshClient.connect(host, new IgnoreHostKeyVerification());

			authentication = new PasswordAuthenticationClient();
			authentication.setUsername(username);
			authentication.setPassword(password);

			String message = "##### Server(host : " + host + ", username : "
					+ username + ", password : " + password + ") connect is ";
			int result = sshClient.authenticate(authentication);
			if (result == AuthenticationProtocolState.COMPLETE)
				System.out.println(message + "complete!!!");
			else
				System.out.println(message + "failed!!!");
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}
}


위 예제 소스를 실행하면 아래와 같이 서버의 인증 결과가 찍히게 됩니다.

##### Server(host : XXX.XXX.XXX.XXX, username : XXXXXXXX, password : XXXXXXXX) connect is complete!!!


SSHTools를 이용하니 DH 키 교환 방법이나 RSA 같은 공개키 암호화 방식을 몰라도 SSH 응용프로그램 개발이 가능합니다.

이제 서버로의 인증은 해보았으니 명령어 실행이나 SFTP 구현 같이 깊숙한 부분까지 파고들어 보고 싶네요.(시간이 된다면...)

Posted by Huikyun