Я скомпилировал OpenSSH_6.6p1 на одном из наших серверов. Я могу войти через SSH на обновленный сервер. Но я не могу подключиться к другим серверам с OpenSSH_6.6p1 или OpenSSH_5.8 из этого. При подключении я получаю сообщение об ошибке, как показано ниже.
Read from socket failed: Connection reset by peer
На конечном сервере в журналах я вижу это, как показано ниже.
sshd: fatal: Read from socket failed: Connection reset by peer [preauth]
Я попытался указать cipher_spec [ssh -c aes128-ctr destination-server], как указано в Вот и смог подключиться. Как настроить ssh для использования шифра по умолчанию? Зачем здесь нужен шифр?
Проблема выглядит как ошибка на стороне сервера. Когда клиент отправляет список шифров, сервер openssh, вероятно, ожидает, что сможет прочитать список за один системный вызов.
Если список поддерживаемых шифров длиннее, чем может быть передан в одном пакете, сервер может получить меньше байтов в первом вызове, чем ожидалось. Правильным поведением на сервере было бы выполнение еще одного вызова для получения остальных байтов. Но из описания проблемы видно, что сервер вместо этого закрывает соединение, когда он не получил сразу полный список шифров. Когда приходит следующий пакет от клиента, сервер отправляет клиенту сброс соединения.
Тогда настройка клиента на использование более короткого списка шифров поможет обойти ошибку. Клиент openssh будет искать список шифров в следующих местах:
Два файла конфигурации относятся к индивидуальным и общесистемным настройкам соответственно. С помощью Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
как предложил Эрик, должно работать нормально.
Вы можете указать шифр в файле конфигурации ssh (/ etc / ssh / ssh_config или аналогичный, зависит от $ PREFIX и т. Д.). Любую опцию, которую вы передаете ssh-клиенту в командной строке, можно установить в конфигурационном файле ssh (client).
Вот соответствующая строка (просто раскомментируйте):
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
Мой путь чтобы исправить это, надеюсь, это кому-то поможет:
# Recreate host keys
sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A
# Re-install SSh
sudo apt-get --reinstall install openssh-server openssh-client
Отредактируйте sshd_config, добавив значение
add : MaxAuthTries 3
Отредактируйте ssh_config, раскомментировав значение
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
Решил эту проблему, изменив права доступа к файлу ниже на 600.
/ и т. д. / ssh / ssh_host_dsa_key
/ и т. д. / ssh / ssh_host_rsa_key
/ и т. д. / ssh / ssh_host_ecdsa_key
Также изменено разрешение для всех других файлов внутри '/ etc / ssh /' на 644. Все файлы-файлы должны принадлежать 'root'.
Ниже приведен полный набор команд для назначения надлежащих разрешений всем файлам в каталоге / etc / ssh:
корень chown: корень / etc / ssh / * chmod 644 / etc / ssh / *
chmod 600 / и т. д. / ssh / ssh_host_dsa_key
chmod 600 / и т. д. / ssh / ssh_host_rsa_key
chmod 600 / и т. д. / ssh / ssh_host_ecdsa_key
Моя проблема, которая имела те же симптомы, что и вы, была связана с усеченными ключами хоста. Попробуйте воссоздать их с помощью:
sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A