Невозможно обменяться ключами шифрования

Сейчас я сталкиваюсь с серьезной проблемой, и я не нашел в Интернете ничего, что могло бы мне помочь.

Я хочу подключиться со своего сервера к другому через SSH для отправки инструкций (второй сервер управляет авторизацией Wi-Fi).

Насколько я могу сказать, я думаю, что проблема возникла, потому что мы обновили один сервер. (Я не совсем уверен, что проблема возникла из-за этого).

Я из Windows Server и хочу назвать Linux.

Вот сценарий:

function executeCommand($command) {
$infoConnection = getInfoConnection();

$out = '';
//The Warning occurs here, impossible to go further
$connection = ssh2_connect($infoConnection["hostname"], 22);

if ($connection === false) {
$error = error_get_last();
throw new Exception("Error Type : ".$error["type"]."<br/>
Message : ".$error["message"]."<br/>
File : ".$error["file"]."<br/>
Line : ".$error["line"]."<br/>");
}

ssh2_auth_password($connection, $infoConnection["username"], $infoConnection["password"]);

$stdio_stream = ssh2_shell($connection);
sleep(2);
fwrite($stdio_stream,$infoConnection["username"]."\n");
sleep(1);
fwrite($stdio_stream,$infoConnection["password"]."\n");
sleep(1);

fwrite($stdio_stream, $command."\n");
sleep(1);
while($buffer = fgets($stdio_stream)) {

$out .= $buffer;
}
fwrite($stdio_stream, 'exit');
unset($connection);

return $out;
}

Вот предупреждение:

Предупреждение: ssh2_connect () [function.ssh2-connect]: Ошибка запуска SSH-соединения (-5): Невозможно обмениваться ключами шифрования в ../aff_wifi.php в строке 203.

Это строка 203:

$connection = ssh2_connect($infoConnection["hostname"], 22);

Когда я «ловлю» предупреждение, у меня есть это:

Тип ошибки: 2 Сообщение: ssh2_connect () [function.ssh2-connect]:
Невозможно подключиться к ipAdress
Файл: .. \ aff_wifi.php
Линия: 203

У вас есть идея, почему это происходит?
Когда я пытаюсь подключиться с моего сервера на другой с PuTTY, все работает нормально

Хорошего дня!

3

Решение

Warning: ssh2_connect() [function.ssh2-connect]: Error starting up SSH connection(-5): Unable to exchange encryption keys in ../aff_wifi.php on line 203

libssh2 0.x поддерживает только обмен ключами на основе Diffie-Hellman SHA1. OpenSSH по умолчанию отключил DH SHA1. Это оставляет libssh2 0.x высоким и сухим.

Вариант 1: обновить libssh2

libssh2 1.7 и выше поддерживает обмен ключами DH SHA256 и ECDH. Они будут работать с последней версией OpenSSH. 1.x релизы требуют PHP 7.

Вариант 2: используйте phpseclib

Если вы застряли на PHP 5, то libssh2 не будет использоваться. Самая высокая версия, доступная для PHP5 — это libssh2 0.13, которая по-прежнему поддерживает только обмен ключами SHA1. Альтернативная библиотека, которая работала для меня, была phpseclib. Это поддерживает diffie-hellman-group-exchange-sha256, и я смог подключиться к обновленным серверам OpenSSH.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]