1
當我嘗試連接到SFTP服務器時,出現異常。我相信它是一個不安全的服務器,但連接也失敗了。我向管理員證實,服務器實際上是安全的,應該使用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)
我很喜歡,說:「使用990」中的println即使代碼繼續使用21非常好。 – 2013-04-11 15:52:28
正如Mike在回答中指出的,「SFTP」是「SSH文件傳輸協議」,與FTP/FTPS無關。這可能是因爲你需要SFTP客戶端而不是FTPS。 – 2013-04-11 16:40:32