Su authentication failure как исправить

  • Главная

  • Инструкции

  • Linux

  • Как исправить ошибку аутентификации SSH

Blog

Основные механизмы аутентификации пользователей при подключении через SSH — проверка пароля и сверка ключей. Их можно применять вместе или по отдельности, это настраивается в файле конфигурации SSH. Оба способа надежные, но иногда при их использовании можно столкнуться с ошибкой authentication failed. В этой статье разберемся, какие у этого сбоя могут быть причины и как их устранить.

Как Исправить Ошибку Аутентификации Ssh (2)

В чем суть ошибки

У сообщения «authentication failed» перевод на русский предельно простой. Этот вывод в терминале говорит о том, что аутентификация пользователя не удалась.

Аутентификация — это проверка подлинности. Например, у вас есть сервер на cloud.timeweb.com. Вы настроили SSH для удаленного подключения. Чтобы система защиты вас пропустила, нужно пройти процедуру аутентификации – подтвердить, что это действительно вы. 

Метод проверки подлинности закреплен в конфигурационном файле SSH. По умолчанию это аутентификация по паролю. 

Другой вариант — использование пары SSH-ключей для проверки подлинности. В таком случае у пользователя на компьютере хранится закрытая часть ключа. На сервере располагается открытая часть. При попытке установить соединение эти части сравниваются. При совпадении доступ открывается. Если совпадения нет, появляется сообщение об ошибке — например, следующая ошибка SSH:

Permission denied (publickey)

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

Ниже разберемся с наиболее частыми ситуациями. 

Ошибка при использовании пароля

Обычно проблемы возникают из-за неверного имени пользователя или пароля. Также стоит обратить внимание на конфигурацию сервера — может стоять запрет на аутентификацию через пароль. Как это проверить:

  1. Откройте файл конфигурации на сервере. Он находится по пути /etc/ssh/sshd_config.
  2. Найдите строку PasswordAuthentication. По умолчанию у неё значение `yes`. Это значит, что проверка по паролю разрешена.
  3. Если в вашем файле конфигурации параметр PasswordAuthentication имеет значение `no`, то подключиться по паролю не получится. Чтобы исправить ситуацию, измените значение на `yes`.

С паролем связано и появление ошибки su authentication failure. Вернее, с отсутствием парольной проверки у пользователя root. Если при такой конфигурации выполнить команду `su` без параметров, то вернется ошибка. Чтобы ее устранить, достаточно назначить пользователю root парольную защиту.

Ошибка при использовании ключей

Одна из самых распространенных проблем — использование не тех ключей при установке соединения. Часто это происходит, если с одного компьютера приходится подключаться к разным хостам. Самый простой способ не запутаться — давать понятные названия с указанием на то, для каких целей вы используете файлы аутентификации.

Использование большого количества ключей без явного указания нужного приводит еще к одной ошибке: 

Too many authentication failures for user

Причина сбоя — превышение числа попыток. Это случается из-за того, что SSH-клиент пытается подключиться к хосту, используя все доступные ключи. Исправить ситуацию можно с помощью опций IdentitiesOnly и IdentityFile. Пример запроса на подключение:

ssh -o IdentitiesOnly=yes 
    -o IdentityFile=id1.key
    user@example.com

Чтобы каждый раз не прописывать это в командной строке при подключении, можно указать необходимую настройку в конфигурационном файле SSH ~/.ssh/config. Пример такой настройки:

Host 192.168.3.44
    IdentityFile ~/.ssh/id_rsa
Host *
    IdentitiesOnly=yes

В этом случае SSH будет использовать только идентификаторы, указанные в файлах ssh_config, плюс идентификатор, указанный в командной строке. Идентификаторы, предоставленные агентом, будут игнорироваться.

При использовании ssh-ключей может возникнуть еще одна ошибка:

Permission denied (publickey, password)

Ее причиной может быть ввод неверной ключевой фразы. 

Если вы потеряете ключевую фразу, восстановить ее будет невозможно. Вам нужно будет сгенерировать новую пару значений для Secure Shell.

Восстановление открытого ключа

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

Самый просто способ — использовать утилиту ssh-keygen.

Запустите терминал и выполните команду:

ssh-keygen -y -f ~/.ssh/id_rsa

Здесь ~/.ssh/id_rsa — это путь к закрытому части, которая хранится на компьютере. В ответ вы получите последовательность символов. Это и есть открытая часть, которую необходимо добавить на сервер.

В среде Windows решить ту же задачу можно с помощью утилиты PuTTYgen, которая входит в набор PuTTY. В ней есть кнопка Load, через которую вы можете загрузить закрытый ключ. Для этого нужно лишь знать директорию, в которой он хранится на компьютере.

После импорта вы увидите окно с полем `Public key for…`. В нём отобразится открытая часть, которую можно скопировать и отправить на сервер.

Восстановить закрытую часть по открытой нельзя — это противоречит основам безопасности.

На что еще обратить внимание

У понятия «authentication failed» перевод дает весьма общее представление о причине сбоя. Проблема может крыться не только в пароле или ключах. Значение имеют также выставленные права доступа и алгоритмы шифрования.

Неправильная конфигурация клиента 

Распространенная ошибка — использование клиента SSH/SFTP (SSH, PuTTY, Filezilla) без правильной настройки всех необходимых параметров, таких как хост, порт, имя пользователя или закрытый ключ. 

Другая частая проблема возникает, когда вы используете неподдерживаемый сертификат. Например, пытаетесь добавить в PuTTY файл ключа *.pem вместо файла ключа *.ppk.

Противоречия в файле конфигурации

Убедитесь, что в файле /etc/ssh/sshd_config установлены параметры, которые не противоречат друг другу. Такое может быть, например, при отключении парольной проверки или запрете на подключение для пользователя root.

Распространенный пример конфликта: у параметра PasswordAuthentication установлено значение `yes`, а у параметра PermitRootLogin — значение `no` или `without-password`. Из-за этого сервер не понимает, как проверять пользователей, и не пускает никого.

Настройка прав доступа

У OpenSSH строгие правила к тому, кто должен быть владельцем файлов и какие на них должны быть выставлены права доступа.

Убедитесь, что на сервере выставлены следующие доступы:

  • ~./ssh – 700.
  • ~./ssh принадлежит текущему аккаунту.
  • ~/.ssh/authorized_keys – 600.
  • ~/.ssh/authorized_keys принадлежит текущему аккаунту.

На клиенте также проверьте разрешения следующих файлов:

  • ~ / .ssh / config – 600.
  • ~ / .ssh / id_ * – 600.

Почему важен владелец? Например, вы настраивали доступ через Secure Shell от имени одного пользователя, а затем пытаетесь подключиться под другим аккаунтом, у которого нет прав даже на чтение содержимого защищенных директорий с аутентификационными данными.

Использование устаревших алгоритмов

В OpenSSH начиная с седьмой версии не поддерживаются старые ключи, которые используют алгоритм цифровой подписи — DSA. Ключи ssh-dss считаются слишком слабыми для того, чтобы можно было доверять им защиту подключения к серверу.

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

Есть и альтернатива, но пользоваться ей придется на свой страх и риск. Речь идет об изменении файла конфигурации /etc/ssh/sshd_config. Если установить параметру PubkeyAcceptedKeyTypes значение `+ssh-dss`, то можно будет использовать ключи, сгенерированные с помощью устаревшего алгоритма цифровой подписи.

Дополнительные опции могут понадобиться и на SSH-клиенте. Например, при подключении к серверу с ПО, которое давно не обновлялось. В частности, такие проблемы возникают при подключении к хостам на CentOS 6, поддержка которой прекращена в конце 2020 года. Чтобы исправить эту ошибку, необходимо добавить опцию `-oHostKeyAlgorithms=+ssh-dss`:

 ssh -oHostKeyAlgorithms=+ssh-dss user@legacyhost

Ошибки на сторонних сервисах

Проблемы аутентификации могут возникать и при использовании сторонних сервисов. Например, при подключении к VK API пользователи сталкиваются с сообщением user authorization failed invalid session. Устранить такой сбой самостоятельно не получится — нужно обращаться в поддержку.

Заключение

Причина ошибки аутентификации может быть как на стороне клиента, так и на стороне сервера. Начинайте диагностику с самого простого: проверьте правильность имени пользователя и пароля, если он используется, выбор SSH-ключа в агенте. Если это не помогает устранить сбой, проверьте конфигурацию подключения и права доступа к файлам, которые OpenSSH использует для проверки подлинности пользователей.

  • Печать

Страницы: [1]   Вниз

Тема: su — выдаёт Authentication failure  (Прочитано 14334 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
classic

su — выдаёт Authentication failure  смотрел  pam там всё нормально так как есть сервак где такие же настройки pam и там всё работает) воот
в логах пишет это

su[6331]: pam_tcb(su:auth): Authentication failed for root from (uid=500)


Оффлайн
лесной_зонтик

Э,.. а чем не устраивает тот же

sudoили

sudo -s
если же так важно именно su, то может стоит пароль на root поставить?

Моя мечта поставить на комп Linux, Unix, *BSD, Mac OS X, OpenSolaris, OS/2, Windows.
Не спрашивайте зачем. Сам не знаю ???


Оффлайн
Бумер


Оффлайн
Sly_tom_cat

если руту пароль не задали — то он просто заблокирован и su без параметра (т.е. переход под рута) работать не должно. Если я набираю su и ввожу свой пароль — то само собой получаю — сбой при аутентификации.


Оффлайн
artifactor

Xubuntu 16.04 x64
Обои для рабочего стола и Space Ambient


Оффлайн
BatlKruyzer

Это мне кажется, или если в экспертной установке системы не включено разрешение постоянно работать под root, то команда su не будет работать?

Во имя процесса-отца, процесса-сына и святого root’а. Админь.


Оффлайн
classic

пароль на root само собой стоит
в pam мог сделать только без пароля чтобы заходил
вообщем хз куда смотреть((
su Нужен без него мне тяжко


Оффлайн
лесной_зонтик

а ты уверен что ты вводишь пароль правильно?

Моя мечта поставить на комп Linux, Unix, *BSD, Mac OS X, OpenSolaris, OS/2, Windows.
Не спрашивайте зачем. Сам не знаю ???


Оффлайн
VlaoMao

sudo и sudo su мало чтоль?


Оффлайн
AyaTooru


  • Печать

Страницы: [1]   Вверх

I came across an OS, Minibian, where the setuid bit was missing from /bin/su, causing this error, even if the password of the root account was enabled.

On Linux, the only way to become root is to execute a setuid-root file. When you run sudo or su, their setuid bit is set, so the process’ effective user becomes root, then they do the authentiaction already as root! If it fails they exit.

Anyway, here are the symptoms and the fix:

$ su
Password:
su: authentication failure
$ sudo su
# ls -l /bin/su
-rwxr-xr-x 1 root root 31092 Jun  5  2012 /bin/su
# chmod u+s /bin/su
# ls -l /bin/su
-rwsr-xr-x 1 root root 31092 Jun  5  2012 /bin/su

Note the difference: rwx before, rws after.

Перейти к содержанию

На чтение 1 мин Опубликовано 09.12.2019

Ошибка

В некоторых ситуациях обычный пользователь в контейнере Docker не может выполнить команду «su» для переключения пользователя.

При выполнении команды «su» возвращается следующая ошибка.

$ su -
Password: [entering correct password]
su: Authentication failure

Решение

Права могут отсутствовать в /usr/bin/su внутри контейнера.

С привилегиями root вы можете исправить это следующим образом:

1. Сначала проверьте текущие разрешения для двоичного файла /usr/bin/su.

# ls -l /usr/bin/su
-rwxr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su

Как мы видим из вышеприведенного вывода, разрешения отсутствуют.

2. Добавьте права для файла /usr/bin/su следующим образом:

# chmod u+s /usr/bin/su

3. Проверьте разрешения еще раз и отметьте флаг «х» в конце поля разрешений.

# ls -l /usr/bin/su
-rwsr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su

4. Попробуйте снова выполнить su внутри Docker контейнера.

$ su - postgres
Password:
Last login: Tue Aug 6 12:13:57 JST 2019 on pts/1
postgres@[hostname] $

Пожалуйста, не спамьте и никого не оскорбляйте.

Это поле для комментариев, а не спамбокс.

Рекламные ссылки не индексируются!

У меня проблемы с командой su. Я знаю свой пароль и набираю его правильно, но su указывает на сбой аутентификации.

Поэтому я проверил в Интернете, а затем перешел в режим восстановления и изменил пароль моего имени пользователя на тот, который я вводил ранее.

Даже сейчас вводим тот же пароль на su дает мне ошибку аутентификации.

Подскажите пожалуйста что я делаю не так??

2011-04-10 07:21

7
ответов

Решение

su просит пароль root. Так как Ubuntu по умолчанию не устанавливает пароль root, вы не можете использовать его, чтобы стать пользователем root.

Вместо этого, чтобы стать пользователем root, используйте sudo -i с вашим личным паролем.


david

10 апр ’11 в 07:51
2011-04-10 07:51

2011-04-10 07:51

su запрашивает пароль учетной записи, которую вы пытаетесь войти. Это использование (упрощенно):

su username

При опускании username, имя пользователя по умолчанию root, Поскольку пароль пользователя root по умолчанию отключен в Ubuntu, пароль не будет действительным. Предпочтительный способ запуска команд root не через оболочку su, а с помощью sudo, как в:

sudo mount /dev/sdb1 /mnt

2011-04-10 08:27

root учетная запись в Ubuntu по умолчанию отключена. Это означает, что у него нет пароля (что отличается от пустого пароля), и никакая попытка аутентификации с паролем root не будет успешной. Следовательно, su или же su - не будет работать.

Вместо этого используйте sudo запустить команду от имени root:

sudo command...

Если вы хотите корневую оболочку, как вы получаете с su, бежать:

sudo -s

Если вы хотите корневую оболочку, как вы получаете с su -, бежать:

sudo -i

2013-02-14 17:20

Когда вам нужно войти в систему, как один из ваших неидентифицированных пользователей говорят git (не имеет pwd)

su - git
Password: 
su: Authentication failure

РЕШЕНИЕ — используйте этот синтаксис для входа в систему как ИД пользователя git

sudo su - git

2017-03-07 13:27

Я наткнулся на ОС, Minibian, где бит setuid отсутствовал в /bin/su, вызывая эту ошибку, даже если пароль учетной записи root был включен.

В Linux единственный способ стать пользователем root — выполнить файл setuid-root. Когда ты бежишь sudo или же suих бит setuid установлен, поэтому эффективный пользователь процесса становится пользователем root, а затем он выполняет аутентификацию уже как пользователь root! Если это не удается, они выходят.

Во всяком случае, вот симптомы и исправление:

$ su
Password:
su: authentication failure
$ sudo su
# ls -l /bin/su
-rwxr-xr-x 1 root root 31092 Jun  5  2012 /bin/su
# chmod u+s /bin/su
# ls -l /bin/su
-rwsr-xr-x 1 root root 31092 Jun  5  2012 /bin/su

Обратите внимание на разницу: rwx до, rws после.


SzG

03 янв ’16 в 21:09
2016-01-03 21:09

2016-01-03 21:09

su просит пароль root.

Вы можете установить пароль пользователя root, пока вы являетесь пользователем root (указав sudo suпри условии, что вы находитесь на sudoers файл), дав команду passwd и установка нового пароля.

Это не рекомендуется по разным причинам.


hytromo

30 май ’14 в 18:24
2014-05-30 18:24

2014-05-30 18:24

В моем случае это было потому, что запись для этого пользователя отсутствовала в /etc/shadow,

Я скопировал на другой тестовый сервер все записи в /etc/passwd с ID выше 1000 вместе с /etc/group но забыл /etc/shadow, Так что каждый раз, когда я сделал su с любым из этих пользователей я бы получил эту ошибку. После добавления отсутствующей записи в /etc/shadow ошибка перестала бы появляться.

Например /etc/shadow:

myusername:*:16992:0:99999:7:::


Wadih M.

17 июл ’16 в 21:30
2016-07-17 21:30

2016-07-17 21:30

Понравилась статья? Поделить с друзьями:
  • Как найти наименьшее общее кратное схема
  • Как найти sberpay в сбербанк онлайн
  • Bluestacks как найти фото
  • Как найти технику snowrunner
  • Как найти значение выражения с дробями умножение