Вопрос Слишком много ошибок аутентификации для * username *


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

rsync -av -e "ssh -p2222" /home/user/.ssh/key.pub username@111.222.33.44: .ssh / authorized_keys

Я продолжаю получать:

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

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

Это сводит меня с ума. Я даже настроил это на специализированном сервере Slicehost и имел меньше проблем, чем с этими ребятами. Любой отзыв? Возможно, это что-то клиентское, а не серверное.


223
2017-09-12 17:14


происхождения




ответы:


Это обычно вызванные непреднамеренным предложением нескольких ключей 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/

359
2017-09-12 17:53



мне непонятно, куда поставить эту линию. На сервере, к которому я пытаюсь войти, в .ssh / config есть только информация для других серверов. Вы имеете в виду, что это должно быть в файле .ssh / config на компьютере, с которого я пытаюсь выполнить ssh? Если это так, это неясно, потому что в вашем ответе говорится «как только вы вошли в систему ...» - David LeBauer
Я должен поставить эту опцию в двойные кавычки, например: ssh -i some_id_rsa -o "IdentitiesOnly yes" them@there:/path/ - knb
Пользователи Windows, запускающие PAGENT (Putty Agent), проверяют, что у вас есть только нужные вам ключи. Я столкнулся с этой проблемой после случайной загрузки всех моих личных ключей. - Chris Rasco
Однако для SSHFS (плавкий предохранитель) Я должен написать опцию с обязательным знаком равенства, например: sshfs -o "IdentitiesOnly=yes" -o IdentityFile=~/.ssh/id_dsa them@there/var/tmp /mnt/tmp  (Ubuntu 13.10) - knb
он может использоваться без кавычек, например: -o IdentitiesOnly=yes - Valentin Kantor


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

ssh -o PubkeyAuthentication=no username@hostname.com

Это приводит к неявной аутентификации. Я смог войти в систему сразу.

Справка


159
2018-03-25 00:14



+1, желаю, чтобы я мог дать вам больше. Малина Pi - единственное устройство, в которое я не попал без открытого ключа. Получалось: «Слишком много ошибок аутентификации для pi» - blak3r
И использовать это с rsync: rsync -av -e 'ssh -o PubkeyAuthentication=no' 'user@host.com:~/remote_file' 'local_file' - Ciro Santilli 新疆改造中心 六四事件 法轮功
Вы также можете создать псевдоним, чтобы сделать его еще быстрее для пароля auth. alias sshp = 'ssh -o PubkeyAuthentication = no' - dhempler


Я тоже получал эту ошибку и обнаружил, что это происходит. B / c сервер настроен на прием до 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, вероятно, является предпочтительным способом решения этой проблемы!


24
2018-06-09 04:56



В вашей последней строке у вас есть identfile /home/YOU/.ssh/foo, но он должен быть идентификационным файлом (a t не f) - Nin
@Nin - спасибо, исправлено. - slm


Если у вас есть пароль и вы хотите просто использовать пароль для входа в систему, вот как вы это делаете.

Чтобы использовать ТОЛЬКО аутентификацию по паролю и НЕ использовать открытый ключ, а НЕ использовать несколько вводящую в заблуждение «клавиатурно-интерактивную» (которая является надмножеством, включая пароль), вы можете сделать это из командной строки:

ssh -o PreferredAuthentications=password user@example.com

6
2018-06-19 14:22





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

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

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

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

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

Например:

$ ssh -o PubkeyAuthentication=no root@host

5
2017-09-20 21:44



Это было именно то, что происходило со мной! Большое спасибо за объяснение;) - El Ninja Trepador


Отправляйся @David, просто добавьте это IdentitiesOnly yes к вашему .ssh / config, он делает то же самое, что и ssh -o PubkeyAuthentication=no.

После входа в систему удалите .ssh/authorized_keys, Теперь вернитесь к локальному компьютеру и введите следующее

cat ~/.ssh/id_rsa.pub | ssh -o PubkeyAuthentication=no user@IP_ADDR 'cat >> .ssh/authorized_keys', Это должно снова включить ваш ssh с открытым ключом


2
2018-01-25 05:48





Я знаю, что это старый поток, но я просто хотел добавить сюда, что я столкнулся с тем же сообщением об ошибке, но это было вызвано тем, что владелец .ssh-папки был root, а не пользователем, который использовал ключ. Я исправил проблему, выполнив следующие команды:

sudo chown -R user:user /home/user/.ssh

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

sudo chmod 700 /home/user/.ssh

Файлы в каталоге .ssh должны иметь разрешение 600:

sudo chmod 600 /home/user/.ssh/authorized_keys

2
2018-06-13 17:37



Я был бы осторожен с использованием этого без оговорки. Разрешения для SSH-ключей обычно ограничены до 400 для некоторых ключей, в частности AWS. Попытка установить их выше этого приведет к тому, что ключ не будет принят, и это может заблокировать вас из вашей учетной записи AWS. - Michael Ryan Soileau


Я добавил в ~ / .ssh / config:

Host *
IdentitiesOnly yes

По умолчанию опция IdentitiesOnly = yes. Если вам нужно подключиться к закрытому ключу, вы должны указать его с опцией -i


2
2017-07-23 17:29