java로 SFTP 에 접속하는 소스 입니다.
기존 인터넷에 있는 소스를 보니 key로 인증받는 형식은 없어서 추가해 보았습니다.
사용은 SFTPUtil util = new SFTPUtil(); 이렇게 선언해서 사용하면 됩니다. ㅋㅋ
해당 SFTP 접속을 위해 라이브러리가 필요 합니다. (아래 클릭해서 받으세요.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | package com.test.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpException; public class SFTPUtil { private Session session = null; private Channel channel = null; private ChannelSftp channelSftp = null; /** * 서버와 연결에 필요한 값들을 가져와 초기화 시킴 * * @param host * 서버 주소 * @param userName * 접속에 사용될 아이디 * @param password * 비밀번호 * @param port * 포트번호 * @param privateKey * 키 */ public void init(String host, String userName, String password, int port, String privateKey) { JSch jSch = new JSch(); try { if(privateKey!=null) {//키가 존재한다면 jSch.addIdentity(privateKey); } session = jSch.getSession(userName, host, port); if(privateKey==null) {//키가 없다면 session.setPassword(password); } java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); channel = session.openChannel("sftp"); channel.connect(); } catch (JSchException e) { e.printStackTrace(); } channelSftp = (ChannelSftp) channel; } /** * 하나의 폴더를 생성한다. * * @param dir * 이동할 주소 * @param mkdirName * 생상할 폴더명 */ public void mkdir(String dir, String mkdirName) { try { channelSftp.cd(dir); channelSftp.mkdir(mkdirName); } catch (SftpException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** * 하나의 파일을 업로드 한다. * * @param dir * 저장시킬 주소(서버) * @param file * 저장할 파일 */ public void upload(String dir, File file) { FileInputStream in = null; try { in = new FileInputStream(file); channelSftp.cd(dir); channelSftp.put(in, file.getName()); } catch (SftpException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 하나의 파일을 다운로드 한다. * * @param dir * 저장할 경로(서버) * @param downloadFileName * 다운로드할 파일 * @param path * 저장될 공간 */ public void download(String dir, String downloadFileName, String path) { InputStream in = null; FileOutputStream out = null; try { channelSftp.cd(dir); in = channelSftp.get(downloadFileName); } catch (SftpException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { out = new FileOutputStream(new File(path)); int i; while ((i = in.read()) != -1) { out.write(i); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { out.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 서버와의 연결을 끊는다. */ public void disconnection() { channelSftp.quit(); session.disconnect(); } } |
java 두날짜 사이 날짜 리스트 구하기 (0) | 2019.04.11 |
---|---|
java 엑셀 파일 읽기 (xlsx) (15) | 2019.03.08 |
java로 xml 생성 (2) | 2018.11.19 |
이클립스 jsp 프로젝트 만들기 (Dynamic Web Project) (0) | 2018.07.07 |
문자열에 특수문자 여부 확인 (한글, 영어, 숫자) (0) | 2018.02.23 |
댓글 영역