Определение SSH KexAlgorithms работает в CLI, но не через ssh_config

По умолчанию мой клиент SSH запрещает использование алгоритма обмена ключами diffie-hellman-group-exchange-sha256 . Однако мне нужно получить доступ к серверу на 10.0.0.1, который требует использования этого алгоритма.

Это отлично работает в командной строке:

 $ ssh -o KexAlgorithms=diffie-hellman-group-exchange-sha256 user@10.0.0.1 Password: 

Однако он не работает, если я /etc/ssh/ssh_config использовать следующее дополнение в конце /etc/ssh/ssh_config :

 Host 10.0.0.1 KexAlgorithms diffie-hellman-group-exchange-sha256 

Вот соответствующий вывод:

 $ ssh -vvv user@10.0.0.1 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug3: kex names ok: [curve25519-sha256@libssh.org] ... debug1: /etc/ssh/ssh_config line 72: Applying options for 10.0.0.1 debug3: kex names ok: [diffie-hellman-group-exchange-sha256] ... debug1: Connecting to 10.0.0.1 [10.0.0.1] port 22. debug1: Connection established. ... debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug2: kex_parse_kexinit: curve25519-sha256@libssh.org ... debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256 ... debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: mac_setup: setup hmac-ripemd160 debug1: kex: server->client aes256-ctr hmac-ripemd160 none debug2: mac_setup: setup hmac-ripemd160 debug1: kex: client->server aes256-ctr hmac-ripemd160 none Unable to negotiate a key exchange method 

То, что я нахожу в этом недоумением, заключается в том, что SSH явно читает соответствующую строку в /etc/ssh/ssh_config и, похоже, доволен этим. Но затем он пытается договориться о ключевом обмене с сервером, используя curve25519-sha256@libssh.org вместо diffie-hellman-group-exchange-sha256 , который, конечно же, не удался.

Почему он это делает, и как я могу его исправить?

  • запускать сценарий удаленно и использовать результат локально с помощью ssh auto login
  • как включить или добавить / dev с tar -one-файловой системой
  • ssh config auto выполнить удаленную команду
  • Получение даты от клиента ssh
  • netcat работает не так, как ожидалось, когда отсоединяется от консоли с nohup (Ubuntu / Debian 64bit)
  • Shellscript! Синтаксическая ошибка, неожиданно "("
  • startx от mac osx до RHEL6
  • Не могу использовать scp с wdmycloud
  • One Solution collect form web for “Определение SSH KexAlgorithms работает в CLI, но не через ssh_config”

    Варианты OpenSSH могут выглядеть как-то странно с первого взгляда. Но справочная страница для ssh_config хорошо документирует:

    Для каждого параметра будет использовано первое полученное значение . Файлы конфигурации содержат разделы, разделенные спецификациями «Host», и этот раздел применяется только для хостов, которые соответствуют одному из шаблонов, указанным в спецификации. Соответствующее имя хоста, как правило, указано в командной строке (см. Параметр CanonicalizeHostname для исключений).

    Вы можете переписать свой конфиг таким образом, чтобы достичь того, что вам нужно (совпадение звездочки должно быть последним):

     Host 10.0.0.1 KexAlgorithms diffie-hellman-group-exchange-sha256 #[...] Host * KexAlgorithms curve25519-sha256@libssh.org 

    Из моего двойного ответа

    И чтобы объяснить, почему опция командной строки работает, также с той же самой страницы руководства для ssh_config :

    1. параметры командной строки
    2. файл конфигурации пользователя (~ / .ssh / config)
    3. системный файл конфигурации (/ etc / ssh / ssh_config)
    Linux и Unix - лучшая ОС в мире.