Jsch是纯Java实现的SSH开源框架
可以用来执行shell命令,实现sftp上传
其中在使用中发现在session.connect时连接非常耗时,很慢
经研究,log调试发现是开启gssapi认证导致
因为本程序中只使用密码认证,所以关闭gssapi认证
实现程序运行时间从10秒减少到600ms
程序部分代码
protected Session getSession(String host,String user,String password){ JSch jsch = new JSch(); try { session = jsch.getSession(user, host, 22); session.setConfig("PreferredAuthentications","password"); session.setConfig("StrictHostKeyChecking","no"); session.setPassword(password); session.connect(3000); // making a connection with timeout. if(session.isConnected()){ System.out.println("session connect success"); }else{ System.out.println("session connect fail"); } } catch (JSchException e) { e.printStackTrace(); } return session; }
log开启方法:
JSch jsch = new JSch(); log = new com.jcraft.jsch.Logger() { public boolean isEnabled(int i) { //开启、关闭调试 return true; } public void log(int i, String s) { //打印日志 System.out.println(s); } }; JSch.setLogger(log);