-
Главная
-
Инструкции
-
Linux
-
Как исправить ошибку аутентификации SSH
Основные механизмы аутентификации пользователей при подключении через SSH — проверка пароля и сверка ключей. Их можно применять вместе или по отдельности, это настраивается в файле конфигурации SSH. Оба способа надежные, но иногда при их использовании можно столкнуться с ошибкой authentication failed. В этой статье разберемся, какие у этого сбоя могут быть причины и как их устранить.
В чем суть ошибки
У сообщения «authentication failed» перевод на русский предельно простой. Этот вывод в терминале говорит о том, что аутентификация пользователя не удалась.
Аутентификация — это проверка подлинности. Например, у вас есть сервер на cloud.timeweb.com. Вы настроили SSH для удаленного подключения. Чтобы система защиты вас пропустила, нужно пройти процедуру аутентификации – подтвердить, что это действительно вы.
Метод проверки подлинности закреплен в конфигурационном файле SSH. По умолчанию это аутентификация по паролю.
Другой вариант — использование пары SSH-ключей для проверки подлинности. В таком случае у пользователя на компьютере хранится закрытая часть ключа. На сервере располагается открытая часть. При попытке установить соединение эти части сравниваются. При совпадении доступ открывается. Если совпадения нет, появляется сообщение об ошибке — например, следующая ошибка SSH:
Permission denied (publickey)
Но причины появления ошибки не ограничиваются только неправильным паролем или не теми ключами. Сбой может возникать также из-за повреждения системных файлов или неверно выставленных прав доступа.
Ниже разберемся с наиболее частыми ситуациями.
Ошибка при использовании пароля
Обычно проблемы возникают из-за неверного имени пользователя или пароля. Также стоит обратить внимание на конфигурацию сервера — может стоять запрет на аутентификацию через пароль. Как это проверить:
- Откройте файл конфигурации на сервере. Он находится по пути /etc/ssh/sshd_config.
- Найдите строку PasswordAuthentication. По умолчанию у неё значение `yes`. Это значит, что проверка по паролю разрешена.
- Если в вашем файле конфигурации параметр 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 (Прочитано 13381 раз)
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 tried to su
to root so I could install lights, but I get an authentication error when I try:
user@host:~$ su
Password:
su: Authentication failure
Seth
56.2k43 gold badges144 silver badges196 bronze badges
asked Apr 11, 2014 at 18:13
3
The root account is disabled by default in Ubuntu, so there is no root password, that’s why su
fails with an authentication error.
Use sudo
to become root:
sudo -i
answered Apr 11, 2014 at 18:18
SethSeth
56.2k43 gold badges144 silver badges196 bronze badges
8
If su
doesn’t work, I do this (in bash):
user@host:~$ sudo bash
root@host:~# su
root@host:/home/user#
Voila! You are now root!
A shortcut for this would be sudo su
. In this case given that you are a member of /etc/sudoers
with all privileges, then you would only need your user’s password.
answered Apr 11, 2014 at 19:19
e.thompsye.thompsy
3211 silver badge5 bronze badges
8
You are getting Authentication failure
because you are trying to become root which is disabled by default in all versions of Ubuntu. This can be easily circumvented in two ways:
- Enabling the root account. This can be achieved by setting up a password.
-
Instead of
su
usesudo -i
or better yet, append to any commandsudo
in the way of:sudo apt-get update [sudo] password for braiam:
I wouldn’t recommend enabling root, since it could raise a security concern, for example, if you use any service exposed to the web.
answered Apr 11, 2014 at 18:38
BraiamBraiam
66.2k30 gold badges174 silver badges262 bronze badges
Open root with sudo -s
and when it’s in this mode type:
passwd
Then, choose password. This password will be for su
command.
answered Apr 29, 2014 at 17:04
aastefanovaastefanov
1,33311 silver badges16 bronze badges
Use sudo your_command
in place of su.
ie
sudo apt-get install "program to install"
answered Apr 11, 2014 at 18:18
girardengogirardengo
4,9051 gold badge25 silver badges31 bronze badges
Содержание
- Что делает команда su
- Имитация входа с помощью команды su —
- Различие между su и su-
- Команда su — выдаёт Authentication failure в Ubuntu
- Заключение
В этой статье рассказано, что такое команда su (замена пользователя) в Unix/Linux и в чем разница между командами su и su —. Linux — это многопользовательское ядро операционной системы, это означает, что несколько пользователей могут одновременно входить в систему Linux.
Вы можете переключаться между разными пользователями в командной строке с помощью команды su. Команда su означает «заменить пользователя». Данная команда изменяет учетные данные пользователя на пользователя root.
Что делает команда su
Команда su, как показано ниже, изменит учетные данные пользователя на учетные данные другого пользователя. Давайте посмотрим это на примере:
[raghu@redhat-server ~]$ su jack
Password:
[jack@redhat-server raghu]$ id
uid=501(jack) gid=501(jack) groups=501(jack),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
Команда id выводит информацию о текущем пользователе. В приведенных выше выходных данных вы можете увидеть измененного пользователя. Если команда su не имеет аргументов, то по умолчанию она изменяется на пользователя root. Справочные информация Ubuntu объясняет это более подробно.
[jack@redhat-server raghu]$ su
Password:
[root@redhat-server raghu]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t:SystemLow-SystemHigh
Имитация входа с помощью команды su —
С помощью команды «su-login» или «su-l» или просто «su -« вы можете переключать пользователя, как если бы это был вход с терминала.
[raghu@redhat-server ~]$ su - jack
Password:
[jack@redhat-server ~]$ id
uid=501(jack) gid=501(jack) groups=501(jack),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
Различие между su и su-
Разница между » su » и «su —» заключается в том, что переменная PATH, не изменяет значения с помощью команды su. Некоторые команды могут не выполняться, если PATH задан неправильно. Например, рассмотрим следующий сценарий:
[jack@redhat-server ~]$ su root
Password:
[root@redhat-server jack]# fdisk -l
bash: fdisk: command not found
[root@redhat-server jack]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/jack/bin
Вы можете видеть, что каталоги sbin не включены в PATH пользователя root. Таким образом, он не выполняет команду fdisk. Теперь мы попытаемся войти в систему с помощью команды su —:
[jack@redhat-server ~]$ su -
Password:
[root@redhat-server ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1044 8281507+ 8e Linux LVM
[root@redhat-server ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
Еще одно различие между этими двумя командами — сценарии входа в систему. Во-первых, давайте посмотрим на сценарии входа в систему:
Когда пользователь входит в систему, выполняются следующие 4 файла, если учетные данные пользователя являются законными:
/etc/profile
/etc/bashrc
~/.bashrc
~/.bash_profile
Когда вы входите в систему с помощью команды » su —«, все эти сценарии выполняются. А с командой su выполняются только сценарии bashrc. Т. е. выполняются сценарии /etc/bashrc и ~./bashrc.
Команда su — выдаёт Authentication failure в Ubuntu
В ubuntu при запуске команды su может произойти сбой аутентификации. Вы получаете эту ошибку, потому что учетная запись root в ubuntu по умолчанию отключена.
user@host:~$ su
Password:
su: Authentication failure
Вместо того, чтобы использовать su используйте sudo -i
или sudo
. Либо поставьте пароль на учетную запись root. Так как она по умолчанию без пароля будет заблокированной.
Заключение
В этой статье мы показали разницу между командами “su” и “su -” в Linux. Надеюсь, вам понравилась наша статья и она вам помогла.