无法通过 phpseclib 打开 SFTP 连接
Unable to open SFTP Connection via phpseclib
我正在尝试通过最新的 phpseclib 版本打开一个 sftp 连接。
我可以通过 Filezilla 成功连接,在第一次连接尝试时系统也提示我接受服务器指纹。
这是由以下人员生成的日志:
define('NET_SSH2_LOGGING', 2);
define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX);
$errorLog = $sftp->getLog();
$sFtpErrorLog = $sftp->getSFTPLog();
Mage::log(print_r($errorLog, true), null, "ssh2.log");
Mage::log(print_r($sFtpErrorLog, true), null, "sftp.log");
它们都产生相同的输出:
<-
00000000 53:53:48:2d:32:2e:30:2d:52:65:62:65:78:53:53:48 SSH-2.0-RebexSSH
00000010 5f:31:2e:30:2e:32:2e:32:37:30:36:39:0d:0a _1.0.2.27069..
->
00000000 53:53:48:2d:32:2e:30:2d:70:68:70:73:65:63:6c:69 SSH-2.0-phpsecli
00000010 62:5f:31:2e:30:20:28:6f:70:65:6e:73:73:6c:2c:20 b_1.0 (openssl,
00000020 62:63:6d:61:74:68:29:0d:0a bcmath)..
-> NET_SSH2_MSG_KEXINIT (since last: 0.1058, network: 0.0002s)
00000000 fc:6a:43:b8:2b:e7:ba:bf:e2:78:55:4c:38:3e:39:fd .jC.+....xUL8>9.
00000010 00:00:00:7e:64:69:66:66:69:65:2d:68:65:6c:6c:6d ...~diffie-hellm
00000020 61:6e:2d:67:72:6f:75:70:31:2d:73:68:61:31:2c:64 an-group1-sha1,d
00000030 69:66:66:69:65:2d:68:65:6c:6c:6d:61:6e:2d:67:72 iffie-hellman-gr
00000040 6f:75:70:31:34:2d:73:68:61:31:2c:64:69:66:66:69 oup14-sha1,diffi
00000050 65:2d:68:65:6c:6c:6d:61:6e:2d:67:72:6f:75:70:2d e-hellman-group-
00000060 65:78:63:68:61:6e:67:65:2d:73:68:61:31:2c:64:69 exchange-sha1,di
00000070 66:66:69:65:2d:68:65:6c:6c:6d:61:6e:2d:67:72:6f ffie-hellman-gro
00000080 75:70:2d:65:78:63:68:61:6e:67:65:2d:73:68:61:32 up-exchange-sha2
00000090 35:36:00:00:00:0f:73:73:68:2d:72:73:61:2c:73:73 56....ssh-rsa,ss
000000a0 68:2d:64:73:73:00:00:00:00:00:00:00:00:00:00:00 h-dss...........
000000b0 39:68:6d:61:63:2d:73:68:61:32:2d:32:35:36:2c:68 9hmac-sha2-256,h
000000c0 6d:61:63:2d:73:68:61:31:2d:39:36:2c:68:6d:61:63 mac-sha1-96,hmac
000000d0 2d:73:68:61:31:2c:68:6d:61:63:2d:6d:64:35:2d:39 -sha1,hmac-md5-9
000000e0 36:2c:68:6d:61:63:2d:6d:64:35:00:00:00:39:68:6d 6,hmac-md5...9hm
000000f0 61:63:2d:73:68:61:32:2d:32:35:36:2c:68:6d:61:63 ac-sha2-256,hmac
00000100 2d:73:68:61:31:2d:39:36:2c:68:6d:61:63:2d:73:68 -sha1-96,hmac-sh
00000110 61:31:2c:68:6d:61:63:2d:6d:64:35:2d:39:36:2c:68 a1,hmac-md5-96,h
00000120 6d:61:63:2d:6d:64:35:00:00:00:04:6e:6f:6e:65:00 mac-md5....none.
00000130 00:00:04:6e:6f:6e:65:00:00:00:00:00:00:00:00:00 ...none.........
00000140 00:00:00:00 ....
<- NET_SSH2_MSG_KEXINIT (since last: 0.0006, network: 0.0002s)
00000000 a0:67:43:5a:e0:d8:e7:0f:26:a1:87:68:58:8a:46:3f .gCZ....&..hX.F?
00000010 00:00:00:7e:64:69:66:66:69:65:2d:68:65:6c:6c:6d ...~diffie-hellm
00000020 61:6e:2d:67:72:6f:75:70:2d:65:78:63:68:61:6e:67 an-group-exchang
00000030 65:2d:73:68:61:32:35:36:2c:64:69:66:66:69:65:2d e-sha256,diffie-
00000040 68:65:6c:6c:6d:61:6e:2d:67:72:6f:75:70:2d:65:78 hellman-group-ex
00000050 63:68:61:6e:67:65:2d:73:68:61:31:2c:64:69:66:66 change-sha1,diff
00000060 69:65:2d:68:65:6c:6c:6d:61:6e:2d:67:72:6f:75:70 ie-hellman-group
00000070 31:34:2d:73:68:61:31:2c:64:69:66:66:69:65:2d:68 14-sha1,diffie-h
00000080 65:6c:6c:6d:61:6e:2d:67:72:6f:75:70:31:2d:73:68 ellman-group1-sh
00000090 61:31:00:00:00:26:73:73:68:2d:72:73:61:2c:73:73 a1...&ssh-rsa,ss
000000a0 68:2d:72:73:61:2d:73:68:61:32:35:36:40:73:73:68 h-rsa-sha256@ssh
000000b0 2e:63:6f:6d:2c:73:73:68:2d:64:73:73:00:00:00:e9 .com,ssh-dss....
000000c0 61:65:73:32:35:36:2d:63:74:72:2c:61:65:73:31:39 aes256-ctr,aes19
000000d0 32:2d:63:74:72:2c:61:65:73:31:32:38:2d:63:74:72 2-ctr,aes128-ctr
000000e0 2c:33:64:65:73:2d:63:74:72:2c:74:77:6f:66:69:73 ,3des-ctr,twofis
000000f0 68:32:35:36:2d:63:74:72:2c:74:77:6f:66:69:73:68 h256-ctr,twofish
00000100 31:39:32:2d:63:74:72:2c:74:77:6f:66:69:73:68:31 192-ctr,twofish1
00000110 32:38:2d:63:74:72:2c:62:6c:6f:77:66:69:73:68:2d 28-ctr,blowfish-
00000120 63:74:72:2c:61:65:73:32:35:36:2d:63:62:63:2c:61 ctr,aes256-cbc,a
00000130 65:73:31:39:32:2d:63:62:63:2c:61:65:73:31:32:38 es192-cbc,aes128
00000140 2d:63:62:63:2c:33:64:65:73:2d:63:62:63:2c:74:77 -cbc,3des-cbc,tw
00000150 6f:66:69:73:68:32:35:36:2d:63:62:63:2c:74:77:6f ofish256-cbc,two
00000160 66:69:73:68:31:39:32:2d:63:62:63:2c:74:77:6f:66 fish192-cbc,twof
00000170 69:73:68:31:32:38:2d:63:62:63:2c:74:77:6f:66:69 ish128-cbc,twofi
00000180 73:68:2d:63:62:63:2c:62:6c:6f:77:66:69:73:68:2d sh-cbc,blowfish-
00000190 63:62:63:2c:61:72:63:66:6f:75:72:32:35:36:2c:61 cbc,arcfour256,a
000001a0 72:63:66:6f:75:72:31:32:38:00:00:00:e9:61:65:73 rcfour128....aes
000001b0 32:35:36:2d:63:74:72:2c:61:65:73:31:39:32:2d:63 256-ctr,aes192-c
000001c0 74:72:2c:61:65:73:31:32:38:2d:63:74:72:2c:33:64 tr,aes128-ctr,3d
000001d0 65:73:2d:63:74:72:2c:74:77:6f:66:69:73:68:32:35 es-ctr,twofish25
000001e0 36:2d:63:74:72:2c:74:77:6f:66:69:73:68:31:39:32 6-ctr,twofish192
000001f0 2d:63:74:72:2c:74:77:6f:66:69:73:68:31:32:38:2d -ctr,twofish128-
00000200 63:74:72:2c:62:6c:6f:77:66:69:73:68:2d:63:74:72 ctr,blowfish-ctr
00000210 2c:61:65:73:32:35:36:2d:63:62:63:2c:61:65:73:31 ,aes256-cbc,aes1
00000220 39:32:2d:63:62:63:2c:61:65:73:31:32:38:2d:63:62 92-cbc,aes128-cb
00000230 63:2c:33:64:65:73:2d:63:62:63:2c:74:77:6f:66:69 c,3des-cbc,twofi
00000240 73:68:32:35:36:2d:63:62:63:2c:74:77:6f:66:69:73 sh256-cbc,twofis
00000250 68:31:39:32:2d:63:62:63:2c:74:77:6f:66:69:73:68 h192-cbc,twofish
00000260 31:32:38:2d:63:62:63:2c:74:77:6f:66:69:73:68:2d 128-cbc,twofish-
00000270 63:62:63:2c:62:6c:6f:77:66:69:73:68:2d:63:62:63 cbc,blowfish-cbc
00000280 2c:61:72:63:66:6f:75:72:32:35:36:2c:61:72:63:66 ,arcfour256,arcf
00000290 6f:75:72:31:32:38:00:00:00:2e:68:6d:61:63:2d:73 our128....hmac-s
000002a0 68:61:31:2c:68:6d:61:63:2d:6d:64:35:2c:68:6d:61 ha1,hmac-md5,hma
000002b0 63:2d:73:68:61:32:2d:32:35:36:2c:68:6d:61:63:2d c-sha2-256,hmac-
000002c0 73:68:61:32:2d:35:31:32:00:00:00:2e:68:6d:61:63 sha2-512....hmac
000002d0 2d:73:68:61:31:2c:68:6d:61:63:2d:6d:64:35:2c:68 -sha1,hmac-md5,h
000002e0 6d:61:63:2d:73:68:61:32:2d:32:35:36:2c:68:6d:61 mac-sha2-256,hma
000002f0 63:2d:73:68:61:32:2d:35:31:32:00:00:00:04:6e:6f c-sha2-512....no
00000300 6e:65:00:00:00:04:6e:6f:6e:65:00:00:00:00:00:00 ne....none......
00000310 00:00:00:00:00:00:00 .......
但仅此而已。在这些初始化消息之后它就失败了。据我所知,他们都使用密钥交换算法,每一端都应该理解为 diffie-hellman-group-exchange-256
那是什么问题,为什么不发送NET_SSH2_MSG_KEXDH_INIT消息?
Hannes Geist 赢了。因为您使用的是 phpseclib 1.0,所以您需要设置 include_path。您可以在 php.ini、apache.conf 中这样做,或者像这样在 PHP 中这样做:
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
我认为这是问题所在的原因:phpseclib 发送的 NET_SSH2_MSG_KEXDH_INIT 中没有任何对称密钥算法。 phpseclib 1.0 通过查看可以加载哪些算法来生成支持的对称密钥算法列表。在这种情况下,它无法加载其中任何一个,因此不会发送任何内容。服务器发现客户端不支持它支持的任何算法,因此永远不会建立连接。
我正在尝试通过最新的 phpseclib 版本打开一个 sftp 连接。
我可以通过 Filezilla 成功连接,在第一次连接尝试时系统也提示我接受服务器指纹。
这是由以下人员生成的日志:
define('NET_SSH2_LOGGING', 2);
define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX);
$errorLog = $sftp->getLog();
$sFtpErrorLog = $sftp->getSFTPLog();
Mage::log(print_r($errorLog, true), null, "ssh2.log");
Mage::log(print_r($sFtpErrorLog, true), null, "sftp.log");
它们都产生相同的输出:
<-
00000000 53:53:48:2d:32:2e:30:2d:52:65:62:65:78:53:53:48 SSH-2.0-RebexSSH
00000010 5f:31:2e:30:2e:32:2e:32:37:30:36:39:0d:0a _1.0.2.27069..
->
00000000 53:53:48:2d:32:2e:30:2d:70:68:70:73:65:63:6c:69 SSH-2.0-phpsecli
00000010 62:5f:31:2e:30:20:28:6f:70:65:6e:73:73:6c:2c:20 b_1.0 (openssl,
00000020 62:63:6d:61:74:68:29:0d:0a bcmath)..
-> NET_SSH2_MSG_KEXINIT (since last: 0.1058, network: 0.0002s)
00000000 fc:6a:43:b8:2b:e7:ba:bf:e2:78:55:4c:38:3e:39:fd .jC.+....xUL8>9.
00000010 00:00:00:7e:64:69:66:66:69:65:2d:68:65:6c:6c:6d ...~diffie-hellm
00000020 61:6e:2d:67:72:6f:75:70:31:2d:73:68:61:31:2c:64 an-group1-sha1,d
00000030 69:66:66:69:65:2d:68:65:6c:6c:6d:61:6e:2d:67:72 iffie-hellman-gr
00000040 6f:75:70:31:34:2d:73:68:61:31:2c:64:69:66:66:69 oup14-sha1,diffi
00000050 65:2d:68:65:6c:6c:6d:61:6e:2d:67:72:6f:75:70:2d e-hellman-group-
00000060 65:78:63:68:61:6e:67:65:2d:73:68:61:31:2c:64:69 exchange-sha1,di
00000070 66:66:69:65:2d:68:65:6c:6c:6d:61:6e:2d:67:72:6f ffie-hellman-gro
00000080 75:70:2d:65:78:63:68:61:6e:67:65:2d:73:68:61:32 up-exchange-sha2
00000090 35:36:00:00:00:0f:73:73:68:2d:72:73:61:2c:73:73 56....ssh-rsa,ss
000000a0 68:2d:64:73:73:00:00:00:00:00:00:00:00:00:00:00 h-dss...........
000000b0 39:68:6d:61:63:2d:73:68:61:32:2d:32:35:36:2c:68 9hmac-sha2-256,h
000000c0 6d:61:63:2d:73:68:61:31:2d:39:36:2c:68:6d:61:63 mac-sha1-96,hmac
000000d0 2d:73:68:61:31:2c:68:6d:61:63:2d:6d:64:35:2d:39 -sha1,hmac-md5-9
000000e0 36:2c:68:6d:61:63:2d:6d:64:35:00:00:00:39:68:6d 6,hmac-md5...9hm
000000f0 61:63:2d:73:68:61:32:2d:32:35:36:2c:68:6d:61:63 ac-sha2-256,hmac
00000100 2d:73:68:61:31:2d:39:36:2c:68:6d:61:63:2d:73:68 -sha1-96,hmac-sh
00000110 61:31:2c:68:6d:61:63:2d:6d:64:35:2d:39:36:2c:68 a1,hmac-md5-96,h
00000120 6d:61:63:2d:6d:64:35:00:00:00:04:6e:6f:6e:65:00 mac-md5....none.
00000130 00:00:04:6e:6f:6e:65:00:00:00:00:00:00:00:00:00 ...none.........
00000140 00:00:00:00 ....
<- NET_SSH2_MSG_KEXINIT (since last: 0.0006, network: 0.0002s)
00000000 a0:67:43:5a:e0:d8:e7:0f:26:a1:87:68:58:8a:46:3f .gCZ....&..hX.F?
00000010 00:00:00:7e:64:69:66:66:69:65:2d:68:65:6c:6c:6d ...~diffie-hellm
00000020 61:6e:2d:67:72:6f:75:70:2d:65:78:63:68:61:6e:67 an-group-exchang
00000030 65:2d:73:68:61:32:35:36:2c:64:69:66:66:69:65:2d e-sha256,diffie-
00000040 68:65:6c:6c:6d:61:6e:2d:67:72:6f:75:70:2d:65:78 hellman-group-ex
00000050 63:68:61:6e:67:65:2d:73:68:61:31:2c:64:69:66:66 change-sha1,diff
00000060 69:65:2d:68:65:6c:6c:6d:61:6e:2d:67:72:6f:75:70 ie-hellman-group
00000070 31:34:2d:73:68:61:31:2c:64:69:66:66:69:65:2d:68 14-sha1,diffie-h
00000080 65:6c:6c:6d:61:6e:2d:67:72:6f:75:70:31:2d:73:68 ellman-group1-sh
00000090 61:31:00:00:00:26:73:73:68:2d:72:73:61:2c:73:73 a1...&ssh-rsa,ss
000000a0 68:2d:72:73:61:2d:73:68:61:32:35:36:40:73:73:68 h-rsa-sha256@ssh
000000b0 2e:63:6f:6d:2c:73:73:68:2d:64:73:73:00:00:00:e9 .com,ssh-dss....
000000c0 61:65:73:32:35:36:2d:63:74:72:2c:61:65:73:31:39 aes256-ctr,aes19
000000d0 32:2d:63:74:72:2c:61:65:73:31:32:38:2d:63:74:72 2-ctr,aes128-ctr
000000e0 2c:33:64:65:73:2d:63:74:72:2c:74:77:6f:66:69:73 ,3des-ctr,twofis
000000f0 68:32:35:36:2d:63:74:72:2c:74:77:6f:66:69:73:68 h256-ctr,twofish
00000100 31:39:32:2d:63:74:72:2c:74:77:6f:66:69:73:68:31 192-ctr,twofish1
00000110 32:38:2d:63:74:72:2c:62:6c:6f:77:66:69:73:68:2d 28-ctr,blowfish-
00000120 63:74:72:2c:61:65:73:32:35:36:2d:63:62:63:2c:61 ctr,aes256-cbc,a
00000130 65:73:31:39:32:2d:63:62:63:2c:61:65:73:31:32:38 es192-cbc,aes128
00000140 2d:63:62:63:2c:33:64:65:73:2d:63:62:63:2c:74:77 -cbc,3des-cbc,tw
00000150 6f:66:69:73:68:32:35:36:2d:63:62:63:2c:74:77:6f ofish256-cbc,two
00000160 66:69:73:68:31:39:32:2d:63:62:63:2c:74:77:6f:66 fish192-cbc,twof
00000170 69:73:68:31:32:38:2d:63:62:63:2c:74:77:6f:66:69 ish128-cbc,twofi
00000180 73:68:2d:63:62:63:2c:62:6c:6f:77:66:69:73:68:2d sh-cbc,blowfish-
00000190 63:62:63:2c:61:72:63:66:6f:75:72:32:35:36:2c:61 cbc,arcfour256,a
000001a0 72:63:66:6f:75:72:31:32:38:00:00:00:e9:61:65:73 rcfour128....aes
000001b0 32:35:36:2d:63:74:72:2c:61:65:73:31:39:32:2d:63 256-ctr,aes192-c
000001c0 74:72:2c:61:65:73:31:32:38:2d:63:74:72:2c:33:64 tr,aes128-ctr,3d
000001d0 65:73:2d:63:74:72:2c:74:77:6f:66:69:73:68:32:35 es-ctr,twofish25
000001e0 36:2d:63:74:72:2c:74:77:6f:66:69:73:68:31:39:32 6-ctr,twofish192
000001f0 2d:63:74:72:2c:74:77:6f:66:69:73:68:31:32:38:2d -ctr,twofish128-
00000200 63:74:72:2c:62:6c:6f:77:66:69:73:68:2d:63:74:72 ctr,blowfish-ctr
00000210 2c:61:65:73:32:35:36:2d:63:62:63:2c:61:65:73:31 ,aes256-cbc,aes1
00000220 39:32:2d:63:62:63:2c:61:65:73:31:32:38:2d:63:62 92-cbc,aes128-cb
00000230 63:2c:33:64:65:73:2d:63:62:63:2c:74:77:6f:66:69 c,3des-cbc,twofi
00000240 73:68:32:35:36:2d:63:62:63:2c:74:77:6f:66:69:73 sh256-cbc,twofis
00000250 68:31:39:32:2d:63:62:63:2c:74:77:6f:66:69:73:68 h192-cbc,twofish
00000260 31:32:38:2d:63:62:63:2c:74:77:6f:66:69:73:68:2d 128-cbc,twofish-
00000270 63:62:63:2c:62:6c:6f:77:66:69:73:68:2d:63:62:63 cbc,blowfish-cbc
00000280 2c:61:72:63:66:6f:75:72:32:35:36:2c:61:72:63:66 ,arcfour256,arcf
00000290 6f:75:72:31:32:38:00:00:00:2e:68:6d:61:63:2d:73 our128....hmac-s
000002a0 68:61:31:2c:68:6d:61:63:2d:6d:64:35:2c:68:6d:61 ha1,hmac-md5,hma
000002b0 63:2d:73:68:61:32:2d:32:35:36:2c:68:6d:61:63:2d c-sha2-256,hmac-
000002c0 73:68:61:32:2d:35:31:32:00:00:00:2e:68:6d:61:63 sha2-512....hmac
000002d0 2d:73:68:61:31:2c:68:6d:61:63:2d:6d:64:35:2c:68 -sha1,hmac-md5,h
000002e0 6d:61:63:2d:73:68:61:32:2d:32:35:36:2c:68:6d:61 mac-sha2-256,hma
000002f0 63:2d:73:68:61:32:2d:35:31:32:00:00:00:04:6e:6f c-sha2-512....no
00000300 6e:65:00:00:00:04:6e:6f:6e:65:00:00:00:00:00:00 ne....none......
00000310 00:00:00:00:00:00:00 .......
但仅此而已。在这些初始化消息之后它就失败了。据我所知,他们都使用密钥交换算法,每一端都应该理解为 diffie-hellman-group-exchange-256
那是什么问题,为什么不发送NET_SSH2_MSG_KEXDH_INIT消息?
Hannes Geist 赢了。因为您使用的是 phpseclib 1.0,所以您需要设置 include_path。您可以在 php.ini、apache.conf 中这样做,或者像这样在 PHP 中这样做:
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
我认为这是问题所在的原因:phpseclib 发送的 NET_SSH2_MSG_KEXDH_INIT 中没有任何对称密钥算法。 phpseclib 1.0 通过查看可以加载哪些算法来生成支持的对称密钥算法列表。在这种情况下,它无法加载其中任何一个,因此不会发送任何内容。服务器发现客户端不支持它支持的任何算法,因此永远不会建立连接。