Notice
Recent Posts
Recent Comments
Link
투케이2K
855. (Android/Java) [jsch] SFTP 라이브러리 - 원격 서버 연결 수행 - connectServer 본문
[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin
[소스 코드]
// ------------------------------------------------------------------------------------------
// TODO [SFTP 서버 연결 실시]
// ------------------------------------------------------------------------------------------
// TODO [라이브러리 설치 버전] : implementation group: 'com.jcraft', name: 'jsch', version: '0.1.54'
// ------------------------------------------------------------------------------------------
public synchronized boolean connectServer(String userName, String host, int port, String password) {
S_Log._W_("SFTP 서버 연결 수행", new String[]{
"userName :: " + String.valueOf(userName),
"host :: " + String.valueOf(host),
"port :: " + String.valueOf(port),
"pw :: " + String.valueOf(password)
});
/*
W ===================================================================
[LOG :: CLASS PLACE :: com.example.javaproject.C_Module.C_SFTP_Client_Module.connectServer(C_SFTP_Client_Module.java:176)]
----------------------------------------------------
[LOG :: NOW TIME :: 2024-08-31 12:21:37 토요일]
----------------------------------------------------
[LOG :: DESCRIPTION :: SFTP 서버 연결 수행]
----------------------------------------------------
[LOG :: userName :: root]
----------------------------------------------------
[LOG :: host :: 115.65.184.135]
----------------------------------------------------
[LOG :: port :: 22]
----------------------------------------------------
[LOG :: pw :: lts0977]
W ===================================================================
// */
// [변수 초기화]
isConnection = false;
// [로직 처리 수행]
try {
// [JSch 객체 선언]
JSch jSch = new JSch();
if (session != null && session.isConnected() == true){ // [접속 관리]
session.disconnect();
session = null;
}
if (channelSftp != null && channelSftp.isConnected() == true){ // [연결 관리]
channelSftp.disconnect();
channelSftp = null;
}
// [파라이터 값으로 새로운 연결 세션 생성]
session = jSch.getSession(String.valueOf(userName), String.valueOf(host), port);
session.setPassword(String.valueOf(password));
// [연결 생성 셋팅 값 설정]
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no"); // [처음 접속하는 호스트 yes/no 이슈 해결]
config.put("PreferredAuthentications", "password"); // [ssh 접속 시 password 사용 설정]
//config.put("kex", "diffie-hellman-group1-sha1"); // [IO Exception 대비 ㅣ 0.1.53 버전 이상]
//config.put("kex", "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256");
session.setConfig(config); // [환경 설정]
session.setTimeout(20000); // [세션 타임 아웃 시간]
session.setServerAliveInterval(60000); // [서버 주기 체크 시간]
// [sftp 연결 수행]
//session.connect(20000); // [연결 수행 및 연결 타임 아웃 시간 지정]
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
if (channel.isConnected() == true){
channelSftp = (ChannelSftp) channel;
isConnection = true;
}
}
catch (Exception e){
e.printStackTrace();
}
// [로그 출력 수행]
S_Log._W_("SFTP 서버 연결 수행 결과 확인", new String[]{
"RETURN :: " + String.valueOf(isConnection)
});
// [리턴 반환 수행]
return isConnection;
}
반응형
'Android' 카테고리의 다른 글
Comments