2012-06-04 4 views
31

SFTP를 통해 원격 서버에 연결하고 파일을 풀어 파일을 처리해야하는 작은 프로그램을 작성하고 있습니다. 여기에 몇 가지 답변을 통해 JSch를 발견 했으므로 작업이 완벽 해 보였습니다. 지금까지 사용하기 쉽고 해결해야 할 사소한 점이 있습니다. 다음 코드를 사용하여 연결하고 파일을 당깁니다.이상한 인증을 요구하는 Java를 통한 SFTP 연결

JSch jsch = new JSch(); 
    Session session = null; 
    try { 
     session = jsch.getSession("username", "127.0.0.1", 22); 
     session.setConfig("StrictHostKeyChecking", "no"); 
     session.setPassword("password"); 
     session.connect(); 

     Channel channel = session.openChannel("sftp"); 
     channel.connect(); 
     ChannelSftp sftpChannel = (ChannelSftp) channel; 
     sftpChannel.cd(REMOTE_FTP_DIR); 
     sftpChannel.lcd(INCOMING_DIR); 
     sftpChannel.get(TMP_FILE, TMP_FILE); 
     sftpChannel.exit(); 
     session.disconnect(); 
    } catch (JSchException e) { 
     e.printStackTrace(); 
    } catch (SftpException e) { 
     e.printStackTrace(); 
    } 

이 작동하고 파일을 가져옵니다. 리눅스 서버에서이 코드를 실행하고 있습니다. JSch가 코드를 실행하면 Kerberos 사용자 이름과 암호를 묻습니다. 그것은 외모와 같은 :

의 Kerberos 사용자 이름 [조지] 조지에 대한

Kerberos 암호 :

난 그냥 두 질문에 대해 입력 한 다음 프로그램이 문제없이 계속 것 같습니다했다. 그러나이 코드는 cron 작업을 통해 자동화되어야하므로이 두 가지 질문에 대해 프로그램을 일시 중지하지 않는 것이 좋습니다. 이 질문을하지 않도록 내가 공급하지 않는 것이 있습니까? 질문하는 것을 멈추기 위해 내가해야 할 일이 있습니까? 잘만되면 누군가는 약간의 생각을 가지고 있습니다. 감사.

+0

, thuis가 관련 될 수있다 /show_bug.cgi?id=53437 – Aaron

답변

64

다른 사람들이 비슷한 문제를 겪고있는 경우를 대비하여 여기에 답변을 게시합니다. 나는 모든 차이를 만드는 코드 조각이 빠져있다. 난 그냥

session.connect(); 

전에

session.setConfig("PreferredAuthentications", 
        "publickey,keyboard-interactive,password"); 

를 추가하는 데 필요한 모든 것을 지금은 완벽하게 작동합니다.

+0

+1 매우 유용합니다. 그것은 또한 나를 도왔습니다 –

+0

이것은 아름답게, 새해 복 많이 받으 셨습니다 :-D – raffian

+0

당신이 저를 구해 주셨습니다, thanks :) –

5

자체 수용 응답의 해답은 정확하지만 설명이 부족합니다.

문제는 OP에 Kerberos/GSSAPI 인증이 기본 설정 (JSch 기본값)으로 설정되어 있다는 점입니다. OP는 실제로 Kerberos 프롬프트에 대한 사용자 이름이나 암호를 지정하지 않기 때문에 OP를 실제로 사용하거나 원하지 않습니다.

용액은 바람직한 인증 방법의리스트로부터 커버 로스/GSSAPI (gssapi-with-mic)를 제거하는 것이다 https://issues.apache.org/bugzilla : 후대

session.setConfig(
    "PreferredAuthentications", 
    "publickey,keyboard-interactive,password"); 
관련 문제