2013-04-11 2 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); 

Exception (При работе в WCS окр)

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

Мне нравится Println, который говорит «с использованием 990», даже если код переходит к использованию 21. Очень хорошо. –

+0

Как указал Майк в своем ответе, «SFTP» является «SSH File Transfer Protocol», который не имеет ничего общего с FTP/FTPS. Возможно, вам нужен SFTP-клиент, а не FTPS. –

ответ

3

Пожалуйста, обратите внимание, что безопасный FTP весьма неоднозначным вещь.

  1. SFTP является частью протокола SSH
  2. FTPS является реальным "FTP безопасный" как расширение протокола FTP

В настоящее время существует 2 вида FTPS: неявные (FTPS) и неявные (FTP/ES).

  • FTPS шифруется по умолчанию, и, как правило, работает на порту 990.
  • FTP/ES соединение начинается как обычный FTP (по умолчанию порт 21) и явно возбуждает "START TLS" или "START" SSL FTP команда.

Существует множество проблем, вызванных путаницей между всеми этими протоколами. Я предполагаю, что это также имеет место здесь - вы, вероятно, отправляете «AUTH TLS» на сервер, который ожидает данные SSL или вы отправляете данные SSL на сервер, который ожидает «AUTH TLS».

Может быть client.connect("obuftp.sears.com",990); будет просто отлично ...

Вы можете прочитать на https://en.wikipedia.org/wiki/FTPS

Смежные вопросы