Как восстановить систему «Слишком много ошибок аутентификации для пользователя root»


64

Я сделал несколько попыток установить SSH-соединение для пользователя root @ host, используя терминал замазки. При этом я несколько раз указывал неправильные учетные данные, после чего я их правильно указывал, а затем, после того как учетные данные были приняты, сеанс ssh прерывается

"Сервер неожиданно закрыл сетевое соединение".

Об этой ошибке сообщает шпатлевка терминала. При попытке ssh root @ localhost с локальной консоли - работает нормально. Это также работает нормально, когда я ssh otheruser @ host с другого хоста. Так что проблемы с сетевым подключением не виноваты. Единственная ошибка, о которой я думаю: «Слишком много ошибок аутентификации для пользователя root», хотя putty сообщает о другой ошибке.

Вопрос в том, как исправить это состояние ошибки и разрешить замазке войти снова? Перезапуск sshd, похоже, не помогает



1
Обязательно отключите ваш агент ssh (например, pageant в Windows), если вы получили сообщение Too many Authentication Failuresоб ошибке, прежде чем сможете вообще войти в систему.
Mahn

Ответы:


8

Вы уверены, что вход в систему root по ssh разрешен?

Проверьте sshd_config и убедитесь, что вход в систему root разрешен. sshd нужно будет перезапустить, если настройка изменится.


121

«Слишком много ошибок аутентификации для пользователя root» означает, что предел MaxAuthTries вашего SSH-сервера был превышен . Случается так, что Ваш клиент пытается аутентифицироваться всеми возможными ключами, хранящимися в /home/USER/.ssh/.

Эта ситуация может быть решена следующими способами:

  1. ssh -i / путь / к / id_rsa root @ host
  2. Укажите пару Host / IdentityFile в /home/USER/.ssh/config .
    • Host host
    • IdentityFile /home/USER/.ssh/id_rsa
    • Host host2
    • IdentityFile /home/USER/.ssh/id_rsa2
  3. Увеличьте значение MaxAuthTries на сервере SSH в / etc / ssh / sshd_config (не рекомендуется).

9
Это действительно должен быть принятый ответ!
Бенджамин

4
Чтобы быть принятым ответом, ответ на самом деле должен быть о программном обеспечении, упомянутом в вопросе. =)
Ракслице

4
Другой причиной превышения лимита может быть ваш ssh-агент. ssh -vvпоказал несколько версий двух ключей (предоставленных ssh-agent), которые были опробованы. Я предполагаю, что это связано с тем, что я перезагружаюсь нечасто и заменяю некоторые ключи, срок действия которых истек очевидно, ssh-agent не перезаписывает старые ключи новыми. Я убил ssh-agent и проблема ушла.
Марк

Какой недостаток будет от увеличения MaxAuthTries? Я сомневаюсь, что многие атаки выполняются с помощью множества разных ключей. Кроме того, если злоумышленник хочет сделать это, он может просто закрыть соединение и открывать новое каждый раз, когда достигает предела. Им все равно не удастся перебить ключ.
Касперд

@ Марк Спасибо! Перезапуск ssh-agent исправил это для меня!
winduptoy

92

Если вы получаете следующую ошибку SSH:

$ Received disconnect from host: 2: Too many authentication failures for root

Это может произойти, если у вас есть (по умолчанию в моей системе) пять или более файлов идентификации DSA / RSA, хранящихся в вашем .sshкаталоге. В этом случае, если -iопция не указана в командной строке, клиент ssh сначала попытается войти в систему, используя каждый идентификатор (закрытый ключ), а затем следующий запрос для аутентификации по паролю. Тем не менее, sshd сбрасывает соединение после пяти неудачных попыток входа в систему (опять же по умолчанию может отличаться)

Так что если у вас есть несколько закрытых ключей в вашем каталоге .ssh, вы можете отключить их Public Key Authenticationв командной строке, используя -oнеобязательный аргумент.

Например:

$ ssh -o PubkeyAuthentication=no root@host

1
Спасибо вам большое! Используя Ubuntu Server, доступ к которому я могу получить только по SSH. Я установил «MaxAuthTries 1» после слепого следования учебнику в интернете.
Андре Фигейредо

Вы только что спасли мою жизнь! Не используется ключевая аутентификация, поэтому другие ответы не помогли. Это решило это так легко !!
Джордж Грин

5
Это ответ
smac89

Я просто снова скопировал ключ, используя аутентификацию по паролю, и теперь он работает каждый раз. У меня есть много ключей в моем .sshкаталоге, я не думаю, что это сумма, которая имеет значение.
Кен Шарп

Это наиболее релевантный ответ, и он действительно должен быть поведением по умолчанию для ssh-copy-id, поэтому, если я хочу скопировать свой идентификатор на сервер, его обычно там нет. Но если ssh попытается сначала пройти аутентификацию на сервере с помощью pubkey, сервер прерывает соединение, прежде чем сможет ввести пароль.
Sprinterfreak

17

На удаленной машине откройте / etc / sshd_config и измените значение

MaxAuthTries 30

Это типичная проблема, когда вы установили несколько ключей или открыли несколько подключений. Сервер проверяет пошаговую проверку каждого ключа, и если MaxAuthTries настроен на 3, то после первых 3-х попыток Вы отключите вас. Типичная безопасность ssh.

Я предлагаю вам использовать подробный режим при подключении к удаленной машине для анализа проблемы.

ssh -v -p номер_порта user @ имя_сервера

Гадать, как и большинство людей на этом форуме, НЕПРАВИЛЬНО, и это напрасная трата времени. Сначала попробуйте проанализировать проблему, собрать информацию, а затем спросить.

Веселиться.


В моем конкретном случае проблема заключалась в том, что я вошел в систему с переадресацией агента, пытаясь запустить сценарий, который использовал собственную идентификацию SSH. Когда я запустил его с переадресацией агента, было слишком много идентификаторов, прежде чем он попробовал свой собственный. Поэтому я настроил скрипт, чтобы отбросить среду агента, и это прояснило его. Я также мог бы увеличить MaxAuthTries, но мне не нужно было в этом случае.
Шон Рейфшнайдер

1
Благодарю. -vпоказал, что мой ssh-клиент пытается использовать несколько ключей (у меня их довольно много). Я очистил их от агента сssh-add -D
joeytwiddle

12

Это плохая практика. Просто подключите обычного пользователя к удаленному устройству и подключитесь через него по ssh, а затем получите root-доступ с помощью su / sudo.


10

Для меня эта проблема была решена путем создания приведенного ниже ssh_config для хоста, к которому я подключался.

(~ / .Ssh / конфигурации)

Host example
HostName example.com
User admin
IdentityFile ~/path/to/ssh_key_rsa
IdentitiesOnly=yes

Проблема возникла из-за того, что в моей ~/.sshпапке слишком много ключей ssh , например, 16 или около того. И без обеих этих директив IdentityFileAND IdentitiesOnlyв конфиге моя машина, по-видимому, пробовала все ключи ~/.sshи достигла максимального числа попыток, прежде чем пытаться ввести правильный IdentityFile.


6

Я бы порекомендовал вам, как Анон выше писал, использовать другого пользователя для получения доступа по SSH, а затем использовать suкоманду для получения rootдоступа.

Кроме того , убедитесь , чтобы включить PermitRootLoginв /etc/ssh/sshd_configфайл на сервере.


5

Я также столкнулся с той же проблемой. Это может легко произойти, если вы используете Pageant и в него загружено большое количество ключей , поскольку эти серверы учитывают каждое предложение открытого ключа как попытку аутентификации.

(Этот совет взят отсюда .)


1
Мы не очень заинтересованы в ответах только для ссылок здесь, так как ссылки гниют, и ответ становится бесполезным. Сохраните ссылку, во что бы то ни стало, но если бы вы могли суммировать решение в параграфе или два, вы вполне могли бы получить ответ на этот вопрос.
MadHatter

2
Я надеюсь, что вы простите мое последующее редактирование; теперь (я надеюсь) становится ясно, что совет, на который вы ссылаетесь, - это совет, который вы даете, но все же указывает на первоисточник. +1 от меня за то, что я старался улучшить свой ответ!
MadHatter,

У меня тоже была проблема "Слишком много ошибок аутентификации" в Putty. После того, как я удалил все остальные ключи из PageAnt, наконец, успешно вошел в систему.
Klor

4

Я исправил эту проблему в своих системах, выполнив следующие команды:

eval $(ssh-agent)
ssh-add  ~/.ssh/keyname

Затем пытается SSH в удаленной машине


3

Чтобы временно решить эту проблему, пока все не будет полностью решено, как отмечено в другом месте, вы можете сбросить счетчик PAM пользователя, чтобы он мог повторить попытку:

pam_tally --reset --user <USERNAME>
pam_tally2 --reset --user <USERNAME>

2

Я был укушен подобной проблемой. Однако настоящая причина была в том, что у меня был ForwardAgent yesфайл конфигурации машины вдоль трубы. Я подключался от машины A к машине B к машине C.

Сообщение об ошибке было показано при попытке ssh от B -> C, но оно было вызвано тем, что A имела активную пересылку. Таким образом, C сначала вручил все ключи от A, и только потом ключи от B.

Это внезапно появилось, когда я добавил еще один ключ к А.


1

Я исправил эту проблему на своем Mac:

  1. установка пароля root с помощью «sudo passwd root» затем
  2. редактирование и сохранение конфигурационного файла ssh с помощью «nano / etc / ssh_config» и
  3. изменив RSAAuthentication на «нет», а не на «да».

0

Итак, в моем случае это было довольно странно, вот так ...

У меня есть стандартная бродячая виртуальная машина с ключом SSH, и я могу подключиться к ней по SSH с помощью Putty. При попытке получить его во время развертывания в PHPStorm я получаю сообщение too many authentication failuresоб ошибке. Таким образом, я увеличил MaxAuthTriesв моем, sshd_configа затем я получил Auth failedошибку с ошибкой, а затем Auth cancel.

Теперь я не знаю точно, почему я даже попробовал это сделать, но ... я добавил точку в конце пути моего ключа SSH в окне развертывания в PHPStorm. Так было так:

C:\Users\Deadpool\\.ssh\chimichanga

и теперь это так:

C:\Users\Deadpool\\.ssh\chimichanga.

И это работает ... В моей папке ".ssh" у меня есть больше файлов:

chimichanga - copy of "id_rsa" from vagrant machine
chimichanga.ppk
chimichanga.pub

Я не уверен, что делает эта чертова точка, но использование .ppkфайла не работает, поэтому я предполагаю, что это своего рода волшебство;) О, и я мог бы избавиться от MaxAuthTries после этого "точечного трюка".


0

Другие ответы сообщают вам лучший способ подключения с правами root и последствия этого для безопасности, но ваш явный вопрос был

как восстановить после этого состояния ошибки и позволить замазке войти снова?

Вы упомянули в последний раз, когда вы подключились, тогда удаленный сервер оборвал соединение.

Я думаю, вы можете обнаружить, что на удаленном сервере работает fail2ban (*), и он «заключил в тюрьму» ваш IP после успешного входа в систему. Вы можете проверить это, попытавшись войти снова, и вы даже не получите приглашение для входа.

Есть два решения, вы можете либо подождать время тюремного заключения, после чего все просто нормализуется, но время тюремного заключения может быть любым. Или вы можете найти другой компьютер для входа, сделать это и «разблокировать» ваш IP, в этом случае «другой» с точки зрения удаленного сервера, так что другой компьютер за тем же брандмауэром, вероятно, тоже не будет работать ,

(*) fail2ban - это супер удобный демон, который может периодически проверять различные файлы журнала и корректировать правила брандмауэра, чтобы сервер «исчезал» при обнаружении потенциально вредоносного поведения от клиента. В debian он выходит из коробки, настроенной на обнаружение нескольких неудачных входов в систему ssh с определенного IP, и после 3 (я думаю) он отбросит все пакеты с этого IP. Работает блестяще, чтобы остановить эти скриптовые атаки грубой силы.


0

Как @sufferer упомянул в другом ответе, некоторые дистрибутивы Linux включают мониторы для защиты от атак грубой силы на внешние видимые сервисы, такие как, например, SSH DenyHostsили fail2ban. Эти мониторы проверяют файлы журналов в поисках неудачных попыток и добавляют фильтры для блокировки IP-адресов, на которых слишком много сбоев (число настраивается и не зависит от конфигурации sshd).

Если ваш дистрибутив включает в себя fail2ban, которые защищают службы, добавляющие правила в брандмауэр iptables, вы можете проверить, какие службы или «тюрьмы» контролируются с помощью команды:

sudo fail2ban-client status

Jail для службы SSH - sshd, поэтому для проверки наличия заблокированных IP-адресов вы можете использовать:

sudo fail2ban-client status sshd

и разблокировать какой-нибудь IP abcd:

sudo fail2ban-client set sshd unbanip a.b.c.d

Если у вас есть DenyHosts, запрещенный список находится в файле /etc/hosts.deny; Вы можете редактировать этот файл напрямую как root. Чтобы предоставить некоторый постоянный доступ к IP abcd, вы можете добавить строку sshd:a.b.c.dв файл /etc/hosts.allow.

Как всегда, manкоманда твой друг:

man fail2ban
man hosts.deny

Должны существовать другие подобные утилиты, но я только использовал их.

Обратите внимание, что увеличение числа повторных попыток, разрешенных в конфигурации sshd, не освобождает заблокированные IP-адреса, а только разрешает больше сбоев в том же соединении. Если допустимое число превышено, пользователь / злоумышленник просто переподключается, чтобы попробовать еще n раз.

Другие сервисы имели встроенный список запретов (как показано в ответе Раджнеш Тхакур о перезапуске сервера VNC).


-2

Я решил эту проблему двумя простыми шагами на моем сервере Ubuntu 16.04 -

Сначала остановите мой VNC-сервер или убейте процесс -

vncserver -kill :1

и затем начните это снова -

vncserver

После этого подключите его из клиента удаленного рабочего стола -

192.0.2.99:5901

Готово !!


Это не имеет ничего общего с вопросом.
Кен Шарп

-3

пожалуйста, следуйте инструкциям ниже для разрешения

  1. Резервное копирование / etc / ssh / sshd_config
  2. Увеличьте значение MaxAuthTries в sshd_config
  3. stoprc -s sshd; startrc -s sshd

И проверьте еще раз после вышеуказанных изменений


-4

У меня была та же проблема, где я продолжал получать "SServer отправил отключенное сообщение типа 2 (ошибка протокола): слишком много ошибок аутентификации для пользователя"

Я решил эту проблему, удалив все мои ssh (ключи .ppk), а затем вошел на интегрированный сервер AD.


Этот ответ бесполезен, и рекомендация удалять файлы .ppk опасна. Пожалуйста, люди, если вы считаете, что вам нужно удалить файлы .ppk (и я не могу придумать вескую причину, по которой вы захотите), переименуйте их во что-то другое, не удаляйте их. Они содержат ваши ключи, которые вам, вероятно, нужны.
Закон 29
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.