SFTP客户端连接
2017-08-04 15:22
162 查看
最近项目使用SFTP很多,在使用过程中遇到很多问题,把自己用到的和同事指导后的代码整理出发,记录一下:
需要引用的jar:
jsch-0.1.53.jar
SFTPClient类:
StringUtils工具类:
IOUtils工具类:
SFTP使用过程完要记得关闭相应的会话session和通道channel,避免连接过多导致不能创建新的SFTP连接,代码仅供参考,
有不对的请包涵和指正
需要引用的jar:
jsch-0.1.53.jar
SFTPClient类:
public class SFTPClient { private static final Logger logger = Logger.getLogger(SFTPClient.class); private static int timeoutSecond = 20; private Session session; private ChannelSftp channel; private SFTPClient(Session session, ChannelSftp channel) { this.session = session; this.channel = channel; } public static final SFTPClient connect(String ip, int port, String userName, String password) throws Exception { if (StringUtils.isEmpty(ip)||StringUtils.isEmpty(userName)||StringUtils.isEmpty(password)) { throw new Exception("连接SFTP参数异常"); } Session session = null; Channel channel = null; try { JSch jsch = new JSch(); session = jsch.getSession(userName, ip, port); session.setPassword(password); Properties sshConfig = new Properties(); sshConfig.put("StrictHostKeyChecking", "no"); session.setConfig(sshConfig); session.connect(); channel = session.openChannel("sftp"); channel.connect(timeoutSecond * 1000); logger.info(" Sftp connect success"); return new SFTPClient(session, (ChannelSftp) channel); } catch (JSchException e) { logger.error(" Sftp connect error : ", e); IOUtils.closeQuietly(channel); IOUtils.closeQuietly(session); throw new Exception(" Sftp connect error : "+e.getMessage()); } } public void close() { IOUtils.closeQuietly(channel); IOUtils.closeQuietly(session); } }
StringUtils工具类:
public class StringUtils { /** * 判断字符串是否为空,为空返回true */ public static boolean isEmpty(String str) { return (str == null || "".equals(str.trim()) || "null".equals(str .trim())); } }
IOUtils工具类:
public class IOUtils extends org.apache.commons.io.IOUtils{ public static void closeQuietly(Session session){ if (session != null) { session.disconnect(); } } public static void closeQuietly(Channel channel){ if (channel != null) { channel.disconnect(); } } }
SFTP使用过程完要记得关闭相应的会话session和通道channel,避免连接过多导致不能创建新的SFTP连接,代码仅供参考,
有不对的请包涵和指正
相关文章推荐
- SQL 获取连接客户端IP地址
- 服务器端如何管理很多个客户端的socket连接?
- 【数据库中间件】分布式组件 - 中间件客户端连接显示表和数据
- 不安装oracle客户端使用plsql连接远程数据库
- 客户端连接数据库服务端报ORA-12170,连接超时错误
- DB2客户端连接服务端的方法
- oracle不同版本客户端与服务器端连接的问题
- SSH客户端之SSH Secure Shell 的连接方法
- Redis如何处理客户端连接
- window plsql 无客户端连接centos oracle服务器
- Android 使用Socket实现服务器与手机客户端的长连接三:clientA 发送给clientB,定点发送
- 云客户端重在连接
- 使用toad连接oracle数据库的方法(内含oracle数据库客户端安装包)
- unidac连接ORACLE免装客户端驱动
- navicat连接oracle的错误:ora-12737:instant client light :unsupport server charater set ZHS16GBK解决办法。(oracle服务端字符集,客户端字符集,dmp备份文件字符集,or
- 免安装Oracle客户端使用PLSQL连接Oracle
- WCF客户端连接出错
- Linux下oracle连接客户端sqlplus的安装配置
- 在solaris10下配置ssh及使用客户端FTP连接