Я подключаюсь из системы Mac OS X к серверу Linux. Я настроил доступ с открытым ключом RSA, поэтому могу просто набрать

ssh [hostname]

и он подключится без пароля.

При попытке подключиться к клиенту удаленного рабочего стола x2go, я получаю сообщение об ошибке:

kex error : did not find one of algos diffie-hellman-group1-sha1 in list curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1 for kex algos

Моя система Mac OS X довольно старая и работает под управлением Snow Leopard 10.6.8. Система Linux довольно современна. Версия, сообщаемая ssh -v:

OpenSSH_5.2p1, OpenSSL 0.9.8y 5 Feb 2013

Я слышал, что эта ошибка kex может указывать на несоответствие алгоритмов шифрования на клиенте и сервере. Но почему ssh преуспевает там, где x2go терпит неудачу? Могу ли я заставить x2go делать все, что делает ssh для успешного входа? Частично проблема в том, что x2go не сообщает о последовательности событий (в отличие от ssh -v), поэтому я не уверен, что именно он пытался сделать. Если есть способ заставить его отображать подробный журнал, который был бы полезен.

1 ответ1

0

Да, это несоответствие алгоритма обмена ключами. (Это не имеет ничего общего с "входом с открытым ключом" с вашей стороны. Это совершенно отдельные этапы.)

Проблема исходит от:

  • X2go связывает некачественную клиентскую библиотеку SSH, которая даже не реализует необходимые части спецификации SSH v2 (я нашел отчет об ошибке X2go относительно этой ситуации), и

  • слепо следуя инструкциям из какого-то поста блога (вероятно, "Secure Secure Shell"?) чтобы ограничить SSH-сервер очень маленьким подмножеством алгоритмов обмена ключами, ни один из которых не поддерживается клиентской библиотекой X2go.

Обычно, использование библиотеки, такой как libssh, для соединений SSH - это нормально - работать с библиотечными функциями немного удобнее, чем жонглировать командами /usr/bin/ssh в фоновом режиме. Тем не менее, X2go в вашей системе использует очень старую версию libssh - она реализует только diffie-hellman-group1-sha1 , но не diffie-hellman-group14-sha1 , хотя RFC 4253 требует и того, и другого.

(Разница в том, что "group1" (Oakley Group 2 [sic]) использует 1024-битные параметры DH, что уже недостаточно безопасно. Группа 14 тем временем использует 2048-битные параметры.)


Вы сказали, что ваша система Linux "достаточно актуальна". Когда дело доходит до криптографического программного обеспечения, это даже не близко - последняя версия OpenSSH 7.1 (вашей версии 6 лет), последняя версия OpenSSL 1.0.2d (вашей версии 2 года) и последняя версия libssh 0.7.2 (ваша версия ... старая).

  • Поэтому лучшим решением было бы установить последнюю версию libssh, которая поддерживает более широкий спектр алгоритмов обмена ключами (например, тот же curve25519-sha256@libssh.org). Однако для поддержки алгоритма эллиптической кривой, вероятно, потребуется по крайней мере OpenSSL 1.0.x. Так что, если вы застряли в более старом дистрибутиве Linux, это может быть проблематично ...

  • Другой метод заключается в внесении белого списка diffie-hellman-group1-sha1 в список KexAlgorithms вашего сервера, наряду с перечисленными в настоящее время. Это приведет к сравнительно слабым связям X2go - достаточно сильным против ваших соседей, но, возможно, слабым против трехбуквенных агентств. Тем не менее, вы все еще используете версию OpenSSH с 2009 года, так что, вероятно, она все равно не имеет значения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .