SSH: Too many authentication failures for $username

ssh Тема для тех кто использует Linux в качестве рабочей машины.

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

/home/USER/.ssh/

И однажды вам надо будет подключиться к новому серверу по SSH, вы имеете логин/пароль и ничего не подозревая набиваете команду
$ ssh your_server_ip_address

И вдруг получаете ответ:

"Too many Authentication Failures for user root"

Что это значит?
======================================

По-умолчанию ваш SSH-клиент пытается подключиться к новому серверу используя ваши уже имеющиеся ключи. А мы помним, что у вас накопилось много ключей! Поэтому ваш клиент будет перебирать их всех!

Естественно, у принимающго ваше соединение сервера тихо едет крыша от этого «брутфорса», и он не авторизует ни одну вашу попытку, а по окончанию количества попыток, прописанного в конфиге, выдаёт вам ошибку.

"Too many Authentication Failures for user root"

что по-русски означает, что ограничение MaxAuthTries вашего сервера превышено.

И не важно, что у вас есть правильный ключ, и просто клиент до него не дошёл.
И не важно, что вы вообще хотели зайти по паролю, а не ключу )))

Что делать?
======================================

Самое очевидное, что должно быть сделано, это чистка каталога /home/USER/.ssh/.
Например можно удалить некоторые устаревшие и неактуальные ключи.

Если ничего удалить нельзя и проблема остаётся, можно сделать следующее

  • Прописать в командной строке путь к ключу, который вы используете с новым соединением:

    ssh -i /path/to/id_rsa root@host

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

  • То же самое что и предыдущий пункт, только не прописывать каждый раз путь в командной строке, а указать один раз в конфиге /home/USER/.ssh/config.

    Host host
    IdentityFile /home/USER/.ssh/id_rsa
    Host host2
    IdentityFile /home/USER/.ssh/id_rsa2

  • Это очень-очень плохая идея, но на крайний случай можно увеличить параметр MaxAuthTries у вашего сервера, к которому вы подключаетесь. Настройки хранятся в файле /etc/ssh/sshd_config

Некогда разбираться, мне вот прямо сейчас надо тупо залогиниться!
==============================

Это всё если у вас есть время разбираться со всеми этими ключами. А если нет? Если пожар?
Тут немного советов для ленивых админов, как можно решить проблему прямо сейчас.

  • Удалите все ключи из папки /home/USER/.ssh/config. Предварительно сохранив их в тёмное прохладное место, разумеется! Проблема решена.
  • Если у вас на руках пароль, а не ключ, можно изменить настройки вашего SSH клиента, чтобы авторизация по паролю была базовой. Для этого в файле /etc/ssh/ssh_config вставьте строчку:

    PreferredAuthentications password

Не забудьте потом вернуть всё на место!