2013-04-11 5 views
1

SFTP 서버에 연결할 때 예외가 발생합니다. 나는 그것이 비보안 서버라고 믿지만, FTP와의 연결은 실패했다. 나는 관리자가 서버가 실제로 보안이되어 SFTP를 사용해야 함을 확인했다. 이 코드는 독립 실행 형 Java 프로그램처럼 내 로컬 시스템에서 정상적으로 실행되지만 내 로컬 시스템의 Websphere 상거래 서버에서는 실행되지 않습니다.SFTP 연결 문제

코드 :

FTPSClient client = new FTPSClient(); 
//FTPClient client = new FTPClient(); 
//client.setKeyManager(km); 
System.setProperty("javax.net.debug", "all"); 
//client.setSocketFactory(SSLSocketFactory.getDefault()); 
client.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); 
client.setTrustManager(ACCEPT_ALL); 
client.enterLocalPassiveMode(); 
client.setWantClientAuth(false); 
client.setNeedClientAuth(false); 
//client.setEnabledCipherSuites(null); 
System.out.println("using 990'"); 
client.connect("obuftp.sears.com",21); 

예외 (WCS의 ENV 내에서 실행)

SystemOut  O 220-| Welcome to obuftp401p FTP over SSL (FTPS) Server | 
220-| We allow TLS connections on ports 21 and 990. | 
220-| If you see "503 Login with USER first." use SSL. | 
220 

SystemOut  O AUTH TLS 

SystemOut  O 234 Proceed with negotiation. 

SystemErr  R javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
SystemErr  R  at com.ibm.jsse2.b.c(b.java:169) 
SystemErr  R  at com.ibm.jsse2.b.a(b.java:228) 
SystemErr  R  at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:242) 
SystemErr  R  at com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:437) 
SystemErr  R  at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:142) 
SystemErr  R  at com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:686) 
SystemErr  R  at org.apache.commons.net.ftp.FTPSClient.sslNegotiation(FTPSClient.java:240) 
SystemErr  R  at org.apache.commons.net.ftp.FTPSClient._connectAction_(FTPSClient.java:171) 
+0

에서 자세한 내용을보실 수 있습니다 코드 (21)가 아주 좋은 사용으로 진행에도 불구하고. –

+0

마이크가 지적한 것처럼 "SFTP"는 FTP/FTPS와 관련이없는 "SSH 파일 전송 프로토콜"입니다. FTPS가 아닌 SFTP 클라이언트가 필요할 수 있습니다. –

답변

3

그 보안 FTP 매우 모호한 일이 있습니다. 암시 적 (FTPS) 및 명시 적 (FTP :

  1. SFTP는
  2. FTPS 실제 FTP 프로토콜의 확장으로 "FTP는 보안"입니다 SSH 프로토콜의 일부입니다

이제 FTPS 2 종류가있다/ES).

  • FTPS는 기본적으로 암호화 보통 포트에서 작동 990
  • FTP/ES 연결이 일반 FTP (기본 포트 21)로 시작하고 "SSL을 시작합니다" "TLS 시작"또는 FTP으로 설정 명시되어있다 명령.

이러한 모든 프로토콜간에 혼동으로 인해 많은 문제가 있습니다. 이 경우도 여기에 해당합니다. SSL 데이터가 필요한 서버에 "AUTH TLS"를 보내거나 "AUTH TLS"가 필요한 서버에 SSL 데이터를 보냅니다. 수 있음 client.connect("obuftp.sears.com",990);이 잘 될 것

...

당신은 내가 "990를 사용하여"라고 println 메소드를 좋아 https://en.wikipedia.org/wiki/FTPS