【问题标题】:SFTP connection issueSFTP 连接问题
【发布时间】:2013-04-11 15:45:44
【问题描述】:

当我尝试连接到 SFTP 服务器时遇到异常。我相信它是一个不安全的服务器,但与 FTP 的连接也失败了。我与管理员确认服务器实际上是安全的,应该使用 SFTP。代码在我的本地机器上运行良好,作为一个独立的 java 程序,但在我本地机器上的 Websphere 商务服务器上运行时却不行。

代码:

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 环境中运行时)

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)

【问题讨论】:

  • 我喜欢 println 说“使用 990”,即使代码继续使用 21。非常好。
  • 正如 Mike 在他的回答中指出的那样,“SFTP”是“SSH 文件传输协议”,它与 FTP/FTPS 无关。可能是您需要 SFTP 客户端而不是 FTPS。

标签: java security sftp websphere-commerce wcs


【解决方案1】:

请注意,安全 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阅读更多内容

【讨论】:

    猜你喜欢
    • 2021-04-08
    • 2013-07-31
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    相关资源
    最近更新 更多