我正在尝试连接到FTPS服务器(而不是SFTP)。我正在从Linux系统进行连接,因此我尝试了lftp,ftp-ssl甚至使用php的ftp_ssl_connect,但它们都不起作用。 (我已经能够使用全部或至少一些上述方法连接到其他FTPS服务器)。
我最具有描述性的错误是来自lftp的调试,一直到11:
$ lftp
lftp:〜>打开-u我的用户名ftps://server.net
密码:
lftp [email protected]:〜>调试99999999999
lftp [email protected]:〜> ls
FileCopy(0x717bf0)进入状态INITIAL
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数据包。
----关闭控制 socket
ls:致命错误:gnutls_handshake:接收到具有意外长度的TLS数据包。
使用PHP,我得到以下信息:
警告:ftp_login():第7行的/home/user/ftp.php中的SSL/TLS握手失败
警告:ftp_login():启用SSL的第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,开始协商
写入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 04 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):原因(0)
:对等连接重置
抱歉,如果这篇文章很长,但我已经搜寻了好几天了,而且看不到答案。只是希望我错过的一些调试信息对某人有用。
最佳答案
在Debian上遇到相同错误时:
---- Closing control socket
ls: Fatal error: gnutls_handshake: An unexpected TLS packet was received.
首先,我必须在debian上升级ssl-cert软件包:
$ sudo apt-get upgrade ssl-cert
然后,我不得不使用打开ftp://而不是打开ftps://:
lftp :~> open ftp://xxx.xxx.xxx.xxx:21
ltfp :~> user foo bar
然后错误更改为:
lftp [email protected]:~> ls
ls: Fatal error: Certificate verification: Not trusted (XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX)
此选项消除了错误并允许访问:
lftp [email protected]:~> set ssl:verify-certificate no
关于php - FTPS问题: "A TLS packet with unexpected length was received.",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3345438/