Як відновитись із "Занадто багато збоїв аутентифікації для користувача root"


64

Я зробив кілька спроб встановити SSH-connecton для користувача root @ хост за допомогою putty терміналу. Роблячи це, я кілька разів вказував неправильні облікові дані, після чого я їх правильно вказав, а потім після того, як облікові дані були прийняті, сеанс ssh переривається з

"Сервер несподівано закрив мережеве з'єднання".

Про цю помилку повідомляє термінал шпаклівки. При спробі ssh root @ localhost з локальної консолі - це добре працює. Це також добре працює, коли я ssh otheruser @ хост від іншого хоста. Тож питання підключення до мережі не винні. Єдина помилка, про яку я думаю, це: "Занадто багато збоїв аутентифікації для користувача root", хоча в шпаклівці було повідомлено про іншу помилку.

Питання полягає в тому, як відновити цю умову помилки і знову дозволити ввійти шпаклівці? Перезапуск sshd, здається, не допоможе



1
Не забудьте вимкнути свій ssh-агент (наприклад, проведення конкурсу в Windows), якщо ви отримаєте Too many Authentication Failuresпомилку, перш ніж ви взагалі зможете увійти.
Ман

Відповіді:


8

Ви впевнені, що вхід з кореневим кодом до ssh дозволений?

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


120

"Занадто багато збоїв аутентифікації для користувача root" означає, що було перевищено обмеження MaxAuthTries вашого сервера SSH . Це трапляється так, що Ваш клієнт намагається пройти автентифікацію з усіма можливими ключами, які зберігаються в /home/USER/.ssh/.

Цю ситуацію можна вирішити наступними способами:

  1. ssh -i / path / to / id_rsa root @ хост
  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
Щоб прийняти відповідь, відповідь справді повинна відповідати програмному забезпеченню, зазначеному в питанні. =)
rakslice

4
Ще однією причиною перевищення ліміту може стати ваш ssh агент. ssh -vvпоказано кілька версій двох клавіш (наданих ssh-агентом), які пробуються. Я припускаю, що це відбувається через те, що я нечасто перезавантажуюсь і замінив деякі клавіші, термін дії яких закінчився; мабуть, ssh-agent не замінює старі ключі новими. Я вбив ssh-агента, і проблема пішла.
Марк

Який недолік виникне від збільшення MaxAuthTries? Я сумніваюся, що багато атак здійснюються шляхом спроб безлічі різних клавіш. Крім того, якщо зловмисник захотів це зробити, вони можуть просто закрити з'єднання та відкривати нове кожного разу, коли вони досягають межі. Їм все одно не вдасться зробити грубе примушування.
kasperd

@Mark Дякую! Перезапуск ssh-агента виправив це для мене!
winduptoy

90

Якщо ви отримали таку помилку SSH:

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

Це може статися, якщо у вас в .sshкаталозі зберігаються п'ять або більше файлів посвідчень DSA / RSA (за замовчуванням у моїй системі) . У цьому випадку, якщо -iпараметр не вказаний у командному рядку, ssh-клієнт спочатку спробує увійти, використовуючи кожну особу (приватний ключ) та наступний підказку для автентифікації пароля. Однак sshd припиняє з'єднання після п’яти спроб поганого входу (знову ж за замовчуванням може змінюватися).

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

Наприклад:

$ ssh -o PubkeyAuthentication=no root@host

1
Дуже дякую! Тут використовується сервер Ubuntu, до якого я можу отримати доступ лише через 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 port_number user @ servername

Гадати, як і більшість поеплів на цьому форумі, це НЕБЕЗПЕЧЕНО та його втрата часу. Спочатку спробуйте проаналізувати проблему, зібрати інформацію, а потім запитати.

Весело.


У моєму конкретному випадку проблема полягала в тому, що я ввійшов у систему за допомогою переадресації агента, намагаючись запустити сценарій, який використовував власну ідентифікацію SSH. Коли я запускав це за допомогою переадресації агента, було занадто багато особистих даних, перш ніж він спробував власну. Тому я створив сценарій, щоб викинути середовище агента, і це очистило його. Я також міг би збільшити MaxAuthTries, але мені не потрібно в цьому випадку.
Шон Рейфшнайдер

1
Дякую. -vпоказав моєму ssh-клієнту, що намагається використовувати кілька клавіш (у мене зараз досить багато). Я очистив їх від агента за допомогоюssh-add -D
joeytwiddle

12

Це погана практика. Просто мати постійного користувача у віддаленому вікні та підключитися через ssh за допомогою нього, а потім отримати кореневий доступ за допомогою su / sudo.


10

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

(~ / .ssh / config)

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, нарешті успішно увійшов у систему.
клор

4

Я вирішив цю проблему в своїх системах, виконавши наступні команди:

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

Потім спробуйте ssh у віддаленій машині


3

Щоб тимчасово вирішити цю проблему, поки речі не можна повністю вирішити, як зазначено в іншому місці, ви можете скинути PAM користувача, щоб вони могли спробувати ще раз:

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

2

Мене вкусила подібна проблема. Однак справжньою причиною було те, що я мав ForwardAgent yesу конфігураційному файлі машини вздовж труби. Я підключався від машини А до машини Б до машини С.

Повідомлення про помилку було показано при спробі ssh від B -> C, але воно було викликане тим, що A переадресація активна. Тож С спочатку були подані всі ключі від A, а вже потім ті, від B.

Це раптом з’явилося, коли я додав ще один ключ до А.


1

Я вирішив цю проблему на своєму Mac:

  1. встановлення пароля root з "sudo passwd root" потім
  2. редагування та збереження файлу налаштування ssh за допомогою "nano / etc / ssh_config" та
  3. змінивши аутентифікацію RSA на "ні", а не так.

0

Гаразд, так що в моєму випадку це було досить дивно, ось все ...

У мене є стандартний VM з ключем 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

Тюрма за службу 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.