Хост_B: Ubuntu 22.04.5 LTS, OpenSSH v8.9
Я пытаюсь установить SSH-соединение с удаленным сервером (назовем его «Host_B») через расширение PHP SSH2 для удаленного выполнения некоторых команд. «Host_A» — это сервер, с которого я пытаюсь подключиться. Когда я пытаюсь подключиться к Host_B, он всегда терпит неудачу:
ssh2_connect(): Ошибка при запуске SSH-соединения (-5): Невозможно обменяться ключами шифрования.
ssh2_connect(): невозможно подключиться к [Host_B]
Также: следующее сообщение можно прочитать из журналы SSH от Host_B:
sshd[###]: невозможно договориться с портом [Host_A] 55466: соответствующий тип ключа хоста не найден. Их предложение: ssh-rsa,ssh-dss [preauth]
Примечание. Эти сообщения об ошибках возникают при попытке аутентификации с использованием простого пароля через ssh2_auth_password а также с ssh2_auth_pubkey_file (что имеет смысл, учитывая, что ошибка уже возникает при ssh2_connect, что происходит до любой из двух аутентификаций методы). Просто хотел уточнить
Я предполагаю, что здесь произошло то, что OpenSSH на Host_B отказался от соединения, поскольку не существует безопасного алгоритма, который поддерживается как расширением SSH2 PHP на Host_A, так и OpenSSH. на Host_B.
На данный момент кажется, что единственными двумя алгоритмами, поддерживаемыми расширением PHP SSH2 (даже в последних версиях), как указано в документации PHP, являются ssh-rsa и ssh-dss. Но оба эти алгоритма устарели и по умолчанию отключены в OpenSSH версии 8.8.
Поскольку OpenSSH объявил оба этих алгоритма небезопасными, я не хочу просто снова включить их в некоторые настройки и использовать их, как будто в этом нет ничего плохого.
Каковы мои варианты? Разве это не должно вызывать беспокойства?
Изменить
В документации PHP также указано следующее для ключей хоста:
< blockquote>
Поддерживаемые значения зависят от методов, поддерживаемых базовой библиотекой. См. » документацию libssh2 для получения дополнительной информации.
В документации libssh2 можно найти современные алгоритмы, такие как ssh-ed25519. Но при попытке:
Код: Выделить всё
ssh2_connect('Host_B', [Port], ['hostkey' => 'ssh-ed25519'])
ssh2_connect(): не удалось переопределить метод HOSTKEY
Подробнее здесь: https://stackoverflow.com/questions/792 ... n-insecure
Мобильная версия