Reference link:
http://sachithdhanushka.blogspot.com/2014/02/kerberos-java-client-code.html
Kerberos Java Client: Code
This is the second post of the Kerberos Java Client series. First post can be found here [1]. This post is on the java code that is used to connect to the Kerberized server using ssh, execute a command ('ls') there and get results ( read the output stream). You need to provide the locations of the Kerberos configuration file and the Java configuration file as System properties. I've done it inside the class itself. The code is pretty much self explanatory.
http://sachithdhanushka.blogspot.com/2014/02/kerberos-java-client-code.html
Kerberos Java Client: Code
This is the second post of the Kerberos Java Client series. First post can be found here [1]. This post is on the java code that is used to connect to the Kerberized server using ssh, execute a command ('ls') there and get results ( read the output stream). You need to provide the locations of the Kerberos configuration file and the Java configuration file as System properties. I've done it inside the class itself. The code is pretty much self explanatory.
import com.jcraft.jsch.*;import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class JSCHKerberosConnector { public static void main() { String host = "test.xsede.org"; String user = "sachith"; String command = "ls -ltr"; JSch jsch = new JSch(); jsch.setLogger(new MyLogger()); System.setProperty("java.security.krb5.conf", <path to="" the="" krb5.conf="" ex:="" "="" etc="" krb5.conf"="">); System.setProperty("java.security.auth.login.config", <path to="" the="" jaas.conf="" file="" ex:="" "="" src="" main="" resources="" login.conf"="">); System.setProperty("javax.security.auth.useSubjectCredsOnly", "false"); //to enable kerberos debugging mode System.setProperty("sun.security.krb5.debug", "true"); try { Session session = jsch.getSession(user, host, 22); Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); config.put("PreferredAuthentications", "gssapi-with-mic"); session.setConfig(config); session.connect(20000); Channel channel = session.openChannel("exec"); ((ChannelExec) channel).setCommand( command); channel.setInputStream(null); ((ChannelExec) channel).setErrStream(System.err); InputStream in = channel.getInputStream(); channel.connect(); 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()) { System.out.println("exit-status: " + channel.getExitStatus()); break; } try { Thread.sleep(1000); } catch (Exception ee) { } } channel.disconnect(); session.disconnect(); System.out.println("DONE"); } catch (JSchException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //to log the jsch activity public static class MyLogger implements com.jcraft.jsch.Logger { static java.util.Hashtable name=new java.util.Hashtable(); static{ name.put(new Integer(DEBUG), "DEBUG: "); name.put(new Integer(INFO), "INFO: "); name.put(new Integer(WARN), "WARN: "); name.put(new Integer(ERROR), "ERROR: "); name.put(new Integer(FATAL), "FATAL: "); } public boolean isEnabled(int level){ return true; } public void log(int level, String message){ System.err.print(name.get(new Integer(level))); System.err.println(message); } }}
Comments
Post a Comment