Я использую SSH-соединения на базе PKI уже более 10 лет. Неожиданно после обновления сервера перестали работать некоторые соединения. Я использую те же ключи PKI, которые я использовал годами (у каждого сервера есть свои ключи, у меня есть небольшой набор личных ключей).
Работает - выглядит так:
C:\Users\michael>ssh2 -p 2222 root@192.168.129.64 date
Authentication successful.
Fri Nov 25 10:30:42 2016
Не работает выглядит так:
C:\Users\michael>ssh2 root@192.168.129.64 date
warning: Authentication failed.
Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.).
Что изменилось?
Ответы:
После обновления - побочные эффекты могут вступить в игру. С OpenSSH - значения по умолчанию часто меняются. OpenBSD (кто поддерживает / разрабатывает OpenSSH) имеет политику OpenBSD, чтобы не беспокоиться о обратной совместимости. Это может «сломать» вещи, которые, читай, работали хорошо.
Существует массивный намек - что я не заметил, когда это впервые произошло со мной (используя интерфейс GUI, и я просто щелкнул его и «разозлился» на «глупое обновление - новая версия сломана». Получается новая версия не был сломан - но OpenBSD / OpenSSH начал изменять значения по умолчанию для обмена ключами, начиная с OpenSSH-6.7p1, см .: http://www.openssh.com/txt/release-6.7 , примечательно:
Моя проблема в том, что у меня есть старый клиент, у которого нет новых значений по умолчанию, поэтому он не может подключиться.
Два пути решения: исправить / исправить сервер или - исправить / исправить клиент.
Решение сервера: верните «старые» настройки, чтобы «старые» клиенты могли продолжить подключение, то есть, - дружественно к существующим клиентам - отредактируйте файл sshd_config и добавьте (достаточно) старых шифров.
Ключевые строки для изменения / добавления в sshd_config:
Просто добавь:
Решение № 2 - исправить / заменить клиента
Простой способ узнать, какие шифры поддерживает ваш текущий клиент (при условии CLI),
ssh -h
и посмотреть, обеспечивает ли это что-то вроде:Еще одна полезная команда:
ssh -V
Мой - был - очень старый клиент - для моего рабочего стола. Посмотрев выше, вы увидите, что он не поддерживает ни один из - 15 лет спустя - предпочтительных алгоритмов, даже не один -cbr (вращающийся), только -cbc (блок-копия).
Если ваш клиент не имеет возможности предоставить поддерживаемые ключи и т. Д. (У OpenSSH должна быть возможность
-Q
), просто начните подключение к себе, например,ssh -v localhost
и есть такие строки, чтобы сообщить вам, что они известны:И что было найдено (и использовано):
Дополнительно: информация отладки при неудачном соединении - более подробная информация
Или то, что пытались, но пропустили.
Редактировать: добавлено 02 января 2017
Новый раздел - как насчет клавиш, которые перестают работать?
На моем сервере у меня установлен «старый» клиент и «последний» клиент, и я подключаюсь к серверу по-разному. Здесь проблема не в несовпадении шифров, а в использовании архаичной пары PKI, основанной на DSA.
Короче говоря, openssh-7 (.3) больше не отправляет (по умолчанию, может быть, вообще нет) открытые ключи DSA.
Ниже я сравниваю вывод двух версий openssh
/ usr / bin / ssh (старая версия, левая сторона) и
/ opt / bin / ssh (новая версия, правая сторона) - команда:
Когда вы просматриваете вывод ниже, я надеюсь, что вы заметили, что шаги и сообщения, как правило, одинаковы. Ключевое различие идет после строки SSH2_MSG_SERVICE_ACCEPT
Я хочу, чтобы вы заметили, что старая версия предлагает (и принимается «старым» сервером - пара ключей на основе DSA, в то время как новый сервер никогда не предлагает ключ на основе DSA.
Примечание: «решение» для этого - добавить (хотя бы одну из) пар PKI на основе rsa, ecdsa или ed25519.
источник
ssh2
бы с ним, если бы меня приняли - в основном для простоты выполненияscp
переводов из того же окна, что иssh