Вопрос или проблема
Когда я пытаюсь подключиться по SSH к любому хосту, используя следующую команду:
ssh 192.168.1.5
Я получаю следующую ошибку:
Received disconnect from 192.168.1.5 port 22:2: Слишком много неудачных попыток аутентификации
Disconnected from 192.168.1.5 port 22
Теперь я использовал другой аргумент к команде -vvvv
и выяснил, что программа SSH пытается все ключи SSH и не может подключиться, потому что ни один из них на самом деле не совпадает с моим хостом (192.168.1.5
), что является правильным.
Но при этом я не помню, чтобы отключал аутентификацию по паролю. Я искал в конфигурационном файле, но не нашел ни одной строки конфигурации, которая явно заставляет аутентификацию проходить через SSH ключ.
Как я могу повторно включить аутентификацию по имени пользователя и паролю вместе с аутентификацией по SSH ключу? Или, возможно, более радикальный вариант – как мне полностью сбросить свою SSH конфигурацию, не теряя свои ключи?
Я разобрался:
У меня настроено несколько SSH ключей, которые не привязаны к конкретным доменам или IP-адресам. Поэтому все они тестировались, и все они потерпели неудачу (что и предполагается). Как только все ключи потерпели неудачу, следующим методом аутентификации является аутентификация по имени пользователя и паролю.
Однако я никогда не мог бы дойти до этой части, потому что сервер, к которому я пытался подключиться, имел ограничение на количество разрешенных попыток входа.
Таким образом, дело не в том, что мне не хватает настроек, а в том, что я не ограничил свои ключи для конкретных хостов.
Ответ или решение
Когда вы пытаетесь подключиться к удаленному хосту с помощью SSH и сталкиваетесь с ошибкой "Too many authentication failures", это означает, что ваш клиент SSH пытается аутентифицироваться, используя несколько ключей, которые не подходят для данного сервера. Восприятие ошибки может сбивать с толку, поскольку на первый взгляд может показаться, что вы не имеете возможности ввести пароль.
Основная причина этой проблемы заключается в том, что клиент SSH по умолчанию будет пытаться использовать все доступные SSH-ключи, если в конфигурации не указаны ограничения по используемым ключам. Когда все предлагаемые ключи не проходят аутентификацию, сервер отключает вас из-за ограничения на количество неудачных попыток.
Вот несколько шагов, которые вы можете предпринять для решения этой проблемы:
-
Ограничение используемых ключей:
- По умолчанию SSH использует все доступные ключи в вашем
~/.ssh
каталоге. Вы можете указать конкретные ключи для каждого хоста в файле конфигурации SSH (~/.ssh/config
). Пример:Host 192.168.1.5 IdentityFile ~/.ssh/your_specific_key User your_username
- По умолчанию SSH использует все доступные ключи в вашем
-
Увеличение лимита неудачных попыток на сервере:
- Если у вас есть доступ к конфигурационным файлам сервера, вы можете изменить параметры
MaxAuthTries
вsshd_config
, обычно находящемся в/etc/ssh/sshd_config
. Убедитесь, что вы понимаете риски повышения этого лимита.
- Если у вас есть доступ к конфигурационным файлам сервера, вы можете изменить параметры
-
Авторизация по паролю:
- Чтобы убедиться, что авторизация по паролю активирована на сервере, убедитесь, что в файле
sshd_config
включена строка:PasswordAuthentication yes
- Затем не забудьте перезапустить SSH-сервер для применения изменений.
- Чтобы убедиться, что авторизация по паролю активирована на сервере, убедитесь, что в файле
-
Удаление лишних ключей:
- Если вы не используете некоторые ключи, рассмотрите возможность их удаления или перемещения в другой каталог, чтобы избежать их ненужной аутентификации при подключении.
-
Полная перезагрузка конфигурации SSH:
- Чтобы сбросить вашу конфигурацию SSH и не потерять ключи, вы можете просто переименовать или удалить файл конфигурации
~/.ssh/config
. Создайте новый файл конфигурации с нужными параметрами.
- Чтобы сбросить вашу конфигурацию SSH и не потерять ключи, вы можете просто переименовать или удалить файл конфигурации
Применив эти методы, вы сможете устранить проблему "слишком много неудачных попыток аутентификации" и снова получить доступ по SSH к вашим серверам.