我正在尝试连接到 FTPS 服务器(不是 SFTP)。我是从 linux 系统连接的,所以我尝试了 lftp、ftp-ssl,甚至使用了 php 的 ftp_ssl_connect,但它们都不起作用。(我已经能够使用上述全部或至少部分方法连接到其他 FTPS 服务器)。
我遇到的最具描述性的错误是从 lftp 一直调试到 11:
$ lftp lftp :~> open -u my-username ftps://server.net 密码: lftp my-username@server.net:~> debug 99999999999 lftp my-username@server.net:~> ls FileCopy(0x717bf0) 进入初始状态 FileCopy(0x717bf0) 进入状态 DO_COPY ---- dns缓存命中 ---- 连接到 server.net (IP ADDRESS) 端口 990 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_RSA_AES_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_RSA_CAMELLIA_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_RSA_AES_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_RSA_CAMELLIA_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_RSA_3DES_EDE_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_DSS_AES_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_DSS_CAMELLIA_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_DSS_AES_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_DSS_CAMELLIA_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_DSS_3DES_EDE_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:DHE_DSS_ARCFOUR_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:DHE_PSK_SHA_AES_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:DHE_PSK_SHA_AES_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:DHE_PSK_SHA_3DES_EDE_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:DHE_PSK_SHA_ARCFOUR_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:SRP_SHA_RSA_AES_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:SRP_SHA_RSA_AES_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:SRP_SHA_RSA_3DES_EDE_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:SRP_SHA_DSS_AES_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:SRP_SHA_DSS_AES_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:SRP_SHA_DSS_3DES_EDE_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:RSA_AES_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:RSA_CAMELLIA_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:RSA_AES_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:RSA_CAMELLIA_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:RSA_3DES_EDE_CBC_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:RSA_ARCFOUR_SHA1 GNUTLS:HSK[acfbb0]:保存密码套件:RSA_ARCFOUR_MD5 GNUTLS:HSK[acfbb0]:删除密码套件:PSK_SHA_AES_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:PSK_SHA_AES_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:PSK_SHA_3DES_EDE_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:PSK_SHA_ARCFOUR_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:SRP_SHA_AES_128_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:SRP_SHA_AES_256_CBC_SHA1 GNUTLS:HSK[acfbb0]:删除密码套件:SRP_SHA_3DES_EDE_CBC_SHA1 GNUTLS:EXT[acfbb0]:发送扩展 CERT_TYPE GNUTLS: HSK[acfbb0]: CLIENT HELLO 已发送 [88 字节] GNUTLS:REC[acfbb0]:发送数据包[0]握手(22),长度:88 GNUTLS:断言:gnutls_cipher.c:205 GNUTLS:REC[acfbb0]:发送数据包[1]握手(22),长度:93 GNUTLS:断言:gnutls_buffers.c:638 GNUTLS:断言:gnutls_record.c:909 GNUTLS:断言:gnutls_buffers.c:1152 GNUTLS:断言:gnutls_handshake.c:1032 GNUTLS:断言:gnutls_handshake.c:2331 **** gnutls_handshake:收到了一个长度意外的 TLS 数据包。 ---- 关闭控制插座 ls: 致命错误: gnutls_handshake: 收到了一个意外长度的 TLS 数据包。
使用 PHP,我得到以下信息:
警告:ftp_login(): SSL/TLS 握手在第 7 行的 /home/user/ftp.php 中失败 警告:ftp_login(): SSL enabled 在第 7 行的 /home/user/ftp.php 中启动协商 无法登录
第 6 行:$connect = ftp_ssl_connect("server.net") or die("cannot connect");
第 7 行:$result = ftp_login($connect,"my-username","my-password") or die("cannot login");
使用 ftp-ssl:
$ ftp-ssl -d -z 调试 server.net SSL_DEBUG_FLAG 开启 连接到 server.net。 220-安全通知 220-可以监控所有活动。系统使用表示同意 220监控。信息可能会提供给执法部门。 ftp: setsockopt: 错误的文件描述符 名称(server.net:user):我的用户名 ---> 认证 SSL 234 SSL enabled 开始协商 写入 0x68c190 (102 字节 => 102 (66)) 0000 - 80 64 01 03 01 00 4b 00-00 00 10 00 00 39 00 00 .d........K......9.. 0010 - 38 00 00 35 00 00 16 00-00 13 00 00 0a 07 00 c0 8..5............ 0020 - 00 00 33 00 00 32 00 00-2f 03 00 80 00 00 05 00 ..3..2../........ 0030 - 00 04 01 00 80 00 00 15-00 00 12 00 00 09 06 00 ...... 0040 - 40 00 00 14 00 00 11 00-00 08 00 00 06 04 00 80 @................ 0050 - 00 00 03 02 00 80 e9 28-25 ed ea 2d e4 d2 f2 25 ........(%..-...% 0060 - 80 e1 2e f1 c3 71 .....q 从 0x68c190 读取(7 个字节 => -1 (FFFFFFFFFFFFFFFF)) ftp: SSL_connect 错误错误:00000000:lib(0):func(0):reason(0) :对等方重置连接
对不起,如果这篇文章很长,但我已经搜索了好几天没有看到答案。只是希望我错过的一些调试信息对某人有用。