Слишком много неудачных попыток аутентификации для *имя пользователя*

Слишком много неудачных попыток аутентификации для *имя пользователя*

У меня есть учетная запись hostgator с включенным доступом ssh. При попытке загрузить сгенерированный файл ключа .pub с помощью этой команды:

rsync -av -e "ssh -p2222" /home/user/.ssh/key.pub [email protected]:.ssh/authorized_keys

Я постоянно получаю:

Получено отключение от 111.222.33.44: 2: Слишком много ошибок аутентификации для имени пользователя
rsync: соединение неожиданно закрыто (пока получено 0 байт) [отправитель]
ошибка rsync: необъяснимая ошибка (код 255) в io.c(601) [sender=3.0.7]

Я раньше игрался с ssh, пока не получил ошибку аутентификации. Но теперь, похоже, счетчик ошибок аутентификации не сбрасывается (жду уже больше 12 часов, техподдержка «полагает», что он сбрасывается через 30 минут или 1 час, а другой парень сказал мне, что «он сбрасывается каждый раз, когда вы пытаетесь войти с именем пользователя», черт возьми).

Это сводит меня с ума. Я даже настроил это на сервере Slicehost и у меня было меньше проблем, чем с этими ребятами.

Есть какие-нибудь советы? Возможно, это что-то на стороне клиента, а не сервера.

решение1

Это обычновызвано непреднамеренным предложением нескольких ключей SSHна сервер. Сервер отклонит любой ключ после того, как будет предложено слишком много ключей.

Вы можете убедиться в этом сами, добавив флаг -vк своей sshкоманде, чтобы получить подробный вывод. Вы увидите, что предлагается набор ключей, пока сервер не отклонит соединение, сказав:«Слишком много неудачных попыток аутентификации для [пользователя]». Без подробного режима вы увидите только неоднозначное сообщение.«Сброс соединения пиром».

Чтобы предотвратить предложение нерелевантных ключей, необходимо явно указать это в каждой записи хоста в ~/.ssh/configфайле (на клиентской машине), добавив IdentitiesOnlyследующее:

Host www.somehost.com
  IdentityFile ~/.ssh/key_for_somehost_rsa
  IdentitiesOnly yes
  Port 22

Если вы используете ssh-agent, его полезно запустить ssh-add -Dдля очистки идентификационных данных.

Если вы не используете конфигурацию хостов SSH, вам необходимо явно указать правильный ключ в sshкоманде, например:

ssh -i some_id_rsa -o 'IdentitiesOnly yes' them@there:/path/

Примечание: параметр «IdentitiesOnly yes» необходимо заключить в кавычки.

или

ssh -i some_id_rsa -o IdentitiesOnly=yes them@there:/path/

решение2

Я нашел более простой способ сделать это (при использовании аутентификации по паролю):

ssh -o PubkeyAuthentication=no [email protected]

Это принудительно включает аутентификацию без ключа. Я смог войти немедленно.

Ссылка

решение3

Я тоже получал эту ошибку и обнаружил, что это происходит из-за того, что сервер был настроен на прием до 6 попыток:

/etc/ssh/sshd_config
...
...
#MaxAuthTries 6

Помимо настройки IdentitiesOnly yesв вашем ~/.ssh/configфайле у вас есть еще несколько опций.

  1. Увеличьте MaxAuthTries(на сервере ssh)
  2. удалите некоторые пары ключей, которые есть в вашем ~/.ssh/каталоге, и запуститеssh-add -D
  3. явно связать ключ с указанным хостом в вашем ~/.ssh/configфайле

Вот так:

host foo
hostname foo.example.com
IdentityFile /home/YOU/.ssh/foo
  1. Вероятно, это не лучший способ, учитывая, что это немного ослабит ваш сервер ssh, поскольку теперь он будет принимать больше ключей при данной попытке подключения. Подумайте о векторах атаки методом подбора.

  2. Это хороший способ, если у вас есть ненужные ключи, которые можно удалить навсегда.

  3. И подход с установкой IdentitiesOnly, вероятно, является предпочтительным способом решения этой проблемы!

решение4

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

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

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

Клиент ssh сначала попытается войти, используя каждую идентификацию (закрытый ключ), а затем запросит парольную аутентификацию. Однако sshd разрывает соединение после пяти неудачных попыток входа (опять же, значение по умолчанию может отличаться).

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

Например:

$ ssh -o PubkeyAuthentication=no root@host

Связанный контент