У меня была аналогичная ситуация. Даже когда успешный вход в систему происходит, 'Неудавшееся' сообщение появляется в sshd файле журнала (/var/log/messages), Это вызывается этим регулярным выражением (см. Chris S ответ):
^%(__prefix_line)sFailed [-/\w]+ for .* from <HOST>(?: port \d*)?(?: ssh\d*)?$
согласующие отрезки длинной линии как это из/var/log/messages файла:
Apr 18 14:07:02 hostname sshd[20972]: Failed none for root from 123.45.67.89 port
50472 ssh2
Когда пользователь входит в систему успешно, 'Неудавшийся ни один' не обменивается сообщениями, все еще появляется в файле сообщений.
Для разрешения этого, я изменил sshd_config файл (/etc/ssh/sshd_config) для определения
LogLevel INFO
вместо
LogLevel VERBOSE
Это останавливается, 'Неудавшийся ни один' не обменивается сообщениями для успешных логинов, но сохраняет его для отказов входа в систему.
Я также рассмотрел обновление конфигурационного файла sshd.conf fail2ban и добавление, что что-то к 'ignoreregex' строке, но обновляющий sshd является более чистым решением.
Мой sshd.local файл имеет эту строку для решения подобной проблемы. Сравните Ваш, это должно быть подобно:
failregex = ^%(__prefix_line)s(?:error: PAM: )?[A|a]uthentication (?:failure|error) for .* from <HOST>\s*$
^%(__prefix_line)sDid not receive identification string from <HOST>$
^%(__prefix_line)sFailed [-/\w]+ for .* from <HOST>(?: port \d*)?(?: ssh\d*)?$
^%(__prefix_line)sROOT LOGIN REFUSED.* FROM <HOST>\s*$
^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>\s*$
^%(__prefix_line)sUser \S+ from <HOST> not allowed because not listed in AllowUsers$
^%(__prefix_line)sauthentication failure; logname=\S* uid=\S* euid=\S* tty=\S* ruser=\S* rhost=<HOST>(?:\s+user=.*)?\s*$
^%(__prefix_line)srefused connect from \S+ \(<HOST>\)$
Можно использовать опцию конфигурации ignoreip сказать fail2ban игнорировать IP.
http://www.fail2ban.org/wiki/index.php/Commands
В/etc/fail2ban/jail.conf добавляют что-то как
ignoreip = 127.0.0.1 192.168.0.0/24
Это не решает вашу проблему, но, надеюсь, даст вам представление о том, почему это происходит.
Клиент ssh использует ключи ssh, как вы описали. Я предполагаю, что у вашего клиента есть более одного ключа ssh в указанном агенте ssh (ssh-add -l). В такой настройке ssh-клиент подключается к серверу и пытается аутентифицировать использование «одного из ключей».
Итак, что происходит, так это то, что ssh-клиент пробует один ключ за другим, пока один из них не будет принят сервером.
Предполагая 3 ключа ssh, в худшем случае будут две неудачные попытки, за которыми последует успешный вход. Подключение несколько раз с "findtime" fail2ban ... И вас забанят.
Я тоже сейчас ищу решение. Когда найду, поделюсь. ;)