2015-01-15 2 views
5

У меня проблема с включением сжатия для сеанса SSH в PHP.Предупреждение: ssh2_connect(): отказ от переопределения сервера к методу клиента COMP

Часть кода:

$methods = array(
    'server_to_client' => array(
     'comp' => 'zlib') 
    );if(!($con = ssh2_connect("10.214.201.31", 22, $methods))){ 
    ... 

Предупреждение во время выполнения (через HTTPD или PHP CLI):

Warning: ssh2_connect(): Failed overriding server to client COMP method 

Сжатие не работает (время загрузки тестового файла с помощью ssh2_scp_recv не изменилась). Аналогичное предупреждение после установки клиента на сжатие сервера.

PHP Version 5.5.15 (latest Xampp for Windows) 
ZLib Version 1.2.7 
libSSH Version libssh2/1.4.3 

Поддержка сервера ssh compression (WinSCP download 5 раз быстрее).

Невозможно найти дополнительную информацию в журналах для php или httpd.

Как я должен исследовать эту проблему?

+0

Можете ли вы использовать Putty для SSH на сервере (чтобы подтвердить, что учетные данные работают)? Убедитесь, что вы выбрали «Включить сжатие» в Putty – Raptor

+0

Да, логин/пароль хорош, этот код работает хорошо (но загрузка слишком медленная), поэтому я пытаюсь добавить сжатие и сохранить некоторое время выполнения. – Konstantin

+0

Можете ли вы опубликовать журналы PuTTY? Просто потому, что установлен флажок «Включить сжатие», не обязательно означает, что используется сжатие * *. Вы можете получить журналы Putty, включив ведение журнала. Для этого перейдите в PuTTY-> Session-> Запуск и проверка переключателя «SSH-пакеты». – neubert

ответ

0

Возможно, это была проблема с версией libssh php5, скомпилированной с помощью. Пробовал это на моем рабочем столе и столкнулся с тем же вопросом.

> ssh -C -vv [email protected] 
... 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug2: kex_parse_kexinit: diffie-hellman-group14-sha1 
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss 
debug2: kex_parse_kexinit: aes128-ctr,aes256-ctr,arcfour256,arcfour 
debug2: kex_parse_kexinit: aes128-ctr,aes256-ctr,arcfour256,arcfour 
debug2: kex_parse_kexinit: hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96 
debug2: kex_parse_kexinit: hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96 
debug2: kex_parse_kexinit: [email protected],zlib,none 
debug2: kex_parse_kexinit: [email protected],zlib,none 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256 
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,arcfour 
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,arcfour 
debug2: kex_parse_kexinit: hmac-sha1,hmac-sha1-96 
debug2: kex_parse_kexinit: hmac-sha1,hmac-sha1-96 
debug2: kex_parse_kexinit: none,[email protected] 
debug2: kex_parse_kexinit: none,[email protected] 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: found hmac-sha1 
debug1: kex: server->client aes128-ctr hmac-sha1 [email protected] 
debug2: mac_setup: found hmac-sha1 
debug1: kex: client->server aes128-ctr hmac-sha1 [email protected] 

Вы можете видеть, что мой клиент поддерживает методы сжатия [email protected], zlib и none пока сервер поддерживает только [email protected] и none, поэтому ключевой процесс обмена в конечном итоге оседает на использование [email protected].

К сожалению, поддержка типа [email protected]wasn't added to libssh2 until 1.4.3 сжатия и да, как вы уже догадались, мой php5.4 был скомпилирован с libssh 1.2.7.

> phpinfo(INFO_MODULES); 
.... 
ssh2 

SSH2 support => enabled 
extension version => 0.11.3-dev 
libssh2 version => 1.2.7 
banner => SSH-2.0-libssh2_1.2.7 
remote forwarding => enabled 
hostbased auth => enabled 
polling support => enabled 
publickey subsystem => enabled 

TL; DR: Если WinSCP использует [email protected] как сжатие, убедитесь, что ваш PHP скомпилирован против на libssh2 1.4.3.

+0

Как я упоминал ранее, я использую последнюю версию php с версией libSSH libssh2/1.4.3. В случае соединения WinSCP или Putty (со сжатием) Wireshark показывает 'none, zlib @ openssh.com' как сжатие в сообщении« Exchange Exchange Init »с сервера и' zlib, none' в сообщении/ответе от клиента. В случае подключения php ssh2 Wiresharkk показывает одно сообщение «Key Exchange Init» с сервера и только «none» как сжатие в сообщении/ответе от клиента. Поэтому я думаю, что '@ openssh.com' не должен иметь смысла в оценке компрессии. – Konstantin

Смежные вопросы