Эта конкретная ошибка происходит во время настройки зашифрованного канала. Если ваша система и удаленная система не используют хотя бы один шифр, шифр для согласования отсутствует и зашифрованный канал невозможен. Обычно SSH-серверы предлагают небольшое количество разных шифров для обслуживания разных клиентов; Я не уверен, почему ваш сервер будет настроен на разрешение только 3DES-CBC.
Теперь 3DES-CBC не страшно. Он медленный и обеспечивает меньшую безопасность, чем некоторые другие алгоритмы, но его нельзя сломать сразу, если ключи выбраны правильно. У самой CBC есть некоторые проблемы, когда зашифрованный текст может быть изменен при передаче, но я сильно подозреваю, что возникшее повреждение будет отклонено HMAC SSH, что уменьшит влияние. В итоге, есть худшие варианты, чем 3DES-CBC, и есть лучшие. Однако всегда соблюдайте осторожность при переопределении связанных с безопасностью значений по умолчанию, включая выбор алгоритмов шифрования и обмена ключами.Эти значения по умолчанию являются причинами по причине; некоторые довольно умные люди потратили немного сил на обдумывание вариантов и определили, что то, что было выбрано в качестве значений по умолчанию, обеспечивает лучший общий компромисс безопасности и производительности.
Как вы узнали, вы можете использовать -c ...(или -oCiphers=...), чтобы указать, какой шифр предлагать на стороне клиента. В этом случае добавление -c 3des-cbcразрешает только 3DES-CBC от клиента. Поскольку это соответствует шифру, который предлагает сервер, может быть установлен зашифрованный канал, и соединение переходит к фазе аутентификации.
Вы также можете добавить это в свой личный ~/.ssh/config. Чтобы избежать глобальных изменений для решения локальной проблемы, вы можете поместить их в Hostраздел. Например, если ваша конфигурация SSH в настоящее время говорит (фиктивный пример):
Port 9922
указав глобальный порт по умолчанию 9922 вместо 22 по умолчанию, вы можете добавить раздел хоста для хоста, который требует специальной конфигурации, и раздел глобального хоста для случая по умолчанию. Это стало бы что-то вроде ...
Host 10.255.252.1
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
Host *
Port 9922
Отступы необязательны, но я считаю, что они значительно улучшают читаемость. Пустые строки и строки, начинающиеся с #, игнорируются.
Если вы всегда (или в основном) входите в систему как один и тот же пользователь в этой системе, вы также можете указать это имя пользователя:
Host 10.255.252.1
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
User enduser
Host *
Port 9922
Вам не нужно добавлять Host *раздел, если в вашем ~ / .ssh / config ничего не было для начала, так как в этом случае будут использоваться только скомпилированные или общесистемные значения (обычно из / etc / ssh / ssh_config) используемый.
На этом этапе командная строка ssh для подключения к этому хосту сводится к
$ ssh 10.255.252.1
и все другие пользователи в вашей системе, а также соединения со всеми остальными хостами из вашей системы, не будут затронуты изменениями.