투케이2K

855. (Android/Java) [jsch] SFTP 라이브러리 - 원격 서버 연결 수행 - connectServer 본문

Android

855. (Android/Java) [jsch] SFTP 라이브러리 - 원격 서버 연결 수행 - connectServer

투케이2K 2024. 9. 1. 09:38
반응형

[개발 환경 설정]

개발 툴 : 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;
    }

 

반응형
Comments