Вопрос или проблема
Я пытаюсь виртуализировать старый сервер Linux, и программное обеспечение PtoV требует входа по паролю в качестве root через ssh. Однако вход для root блокируется с ошибкой “Permission Denied” на клиентской стороне и с ошибкой “Failed Password for root” на стороне сервера (когда sshd работает в режиме отладки).
Я УСТАНОВИЛ PermitRootLogin yes
в /etc/ssh/sshd_config
.
Это старый сервер RedHat 7.3, на котором много лет назад запускались скрипты по усилению безопасности, такие как Bastille, и остались многие следы старых ОС (например, ipchains – больше не поддерживаются ядром). Все это говорит о том, что у меня мало представления о том, что было изменено в исходной системе, но изменений много.
- Я могу войти нормально как root из консоли
- Я могу перейти на root из консоли или ssh-сессии
- Я могу нормально ssh как обычный пользователь.
Мой вопрос: Что еще может препятствовать входу для root на этом сервере?
Дополнительная информация:
/etc/pam.d/sshd
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session required pam_limits.so
session optional pam_console.so
/etc/pam.d/system-auth
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3 type=
password sufficient /lib/security/pam_unix.so nullok use_authtok md5 shadow
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
Может кто-то сказать, может ли алгоритм хеширования быть виновником? Учитывая, что я могу войти как не привилегированный пользователь.
Оказалось, что в скрипте /etc/init.d/sshd не было переменной $OPTIONS, которая ссылается на конфигурационный файл. Поэтому sshd запускался без какого-либо конфигурационного файла и, следовательно, по умолчанию использовал “PermitRoodLogin no”.
Я решил эту проблему, добавив следующую строку в начале /etc/init.d/sshd:
OPTIONS="-f /etc/ssh/sshd_config"
Надеюсь, это поможет кому-то другому.
Вход в систему как root через ssh может быть отключен в конфигурации PAM.
У меня была такая же проблема, я могу аутентифицироваться с любым пользователем, но когда я пытаюсь с root, я получаю сообщение “доступ запрещен”. Проблема была решена отключением UsePAM yes
в
/etc/ssh/sshd_config
.
Измените UsePAM yes
на #UsePAM yes
Чтобы расширить то, что сказал Игнасио, я предполагаю, что вы используете pam_securetty, и tty не находятся в /etc/securetty
. Я не припоминаю, какие названия tty в RH7.3. Войдите как обычный пользователь и выполните who
, чтобы увидеть систему именования.
Следуя за embobo, у меня есть большой кластер RH73, который я не могу обновить. Мне говорят, что удаленные входы осуществляются на pts/0
, pts/1
, pts/2
и так далее.
Не могли бы вы попробовать добавить их в /etc/securetty
и посмотреть, улучшит ли это ситуацию? Возможно, лучше добавить их до (скажем) pts/9, в зависимости от того, сколько других пользователей обычно вошло в систему.
Спасибо за вопросы и ответы, это помогло мне сузить круг поиска.
В моем конкретном случае я уже разрешил вход для root.
Я нашел полезным запуск sshd с сообщениями консоли.
Остановите демон службы
systemctl stop sshd
Запустите его с включенными сообщениями консоли
/usr/sbin/sshd -De -f /etc/ssh/sshd_config
Когда закончите, просто CTRL+C и запустите службу как обычно.
Последний компонент был выявлен при просмотре журналов и несоответствии транзакции с демоном. Firewall/iptables выглядели нормально, но усиление безопасности было добавлено с использованием hosts.allow/deny.
/etc/hosts.deny:
sshd:ALL
/etc/hosts.allow:
sshd:10.10.10., 192.168.8.
Добавление IP-адреса моего компьютера для конвертации сюда дало возможность ему обработать, а затем было замечено запись в журнале
User root from 10.10.62.10 not allowed because none of user's groups are listed in AllowGroups
Добавив root в группу wheel, я добился успеха. Надеюсь, это поможет следующему человеку.
Если PermitRootLogin yes
установлено в /etc/ssh/sshd_config
, убедитесь, что оно не переопределено в включенных файлах в /etc/ssh/sshd_config.d
. Вы можете использовать grep -rni 'PermitRootLogin' /etc/ssh/
, чтобы проверить.
Ответ или решение
Невозможность входа в систему через SSH под пользователем root: Подробное руководство по выявлению и устранению проблемы
Ваша проблема с невозможностью входа под пользователем root через SSH похожа на ситуацию, с которой сталкиваются многие администраторы. Работая с устаревшими системами, такими как Red Hat 7.3, важно учитывать множество факторов, которые могут привести к ошибке "Permission Denied" или "Failed Password for root". В данной статье мы рассмотрим основные причины, которые могут мешать вам войти в систему, а также шаги для устранения проблемы.
1. Проверка конфигурации SSH
Первый шаг — убедиться, что вы правильно настроили файл конфигурации SSH /etc/ssh/sshd_config
. Существует несколько параметров, которые необходимо проверить:
-
PermitRootLogin: Убедитесь, что в файле указано
PermitRootLogin yes
. Вы можете использовать команду:grep PermitRootLogin /etc/ssh/sshd_config
Если данная опция отсутствует или переопределена в других включенных файлах (например, в
/etc/ssh/sshd_config.d
), это может привести к блокировке доступа. -
UsePAM: Если ваша конфигурация SSH использует PAM (Pluggable Authentication Modules), возможно, необходимо временно отключить эту функцию, добавив комментарий перед строкой
UsePAM yes
:#UsePAM yes
2. Настройки PAM
-
PAM Configuration: Проверьте, есть ли ограничения на использование root в файле
/etc/pam.d/sshd
. Например, наличие модуляpam_securetty.so
может ограничить доступ к терминалам. Вам необходимо убедиться, что терминалы, которые используются SSH-подключениями (обычно этоpts/0
,pts/1
, и т.д.), добавлены в файл/etc/securetty
.Добавьте следующие строки в
/etc/securetty
:pts/0 pts/1 pts/2
3. Логи SSVD
Для более детального анализа проблемы рекомендуется запустить SSH-сервер в дебаг-режиме. Это позволяет увидеть, что происходит в момент попытки входа:
/usr/sbin/sshd -De -f /etc/ssh/sshd_config
Запуск сервера таким образом покажет сообщения об ошибках в реальном времени.
4. Проверка сетевых настроек
- Hosts.allow и hosts.deny: Убедитесь, что в файлах
/etc/hosts.allow
и/etc/hosts.deny
нет записей, запрещающих доступ к SSH. Например, записьsshd: ALL
в файле/etc/hosts.deny
полностью блокирует доступ для всех клиентов. Если привилегии доступа должны быть ограничены, добавьте IP-адреса, которым разрешен доступ, в/etc/hosts.allow
.
5. Проверка групп
Возможной причиной отказа в доступе может быть отсутствие пользователя в разрешенных группах. Если наследование доступа к SSH ограничено с помощью директивы AllowGroups
, убедитесь, что пользователь root включен в необходимые группы (например, в группу wheel
):
usermod -aG wheel root
6. Патчи и устаревшие модули
Учитывая, что ваш сервер работает на устаревшей версии Red Hat, возможно, что недоступны патчи, которые бы исправили известные ошибки. Также не забудьте проверить, нет ли старых модулей или оболочек, которые могут конфликтовать с modern SSH.
Заключение
Каждый из указанных шагов поможет вам локализовать и устранить проблему с входом под пользователем root через SSH. Как всегда, проводите такие операции с осторожностью и делайте резервные копии важных конфигурационных файлов перед внесением изменений. Надеюсь, данное руководство поможет вам решить вашу проблему и восстановить доступ к системе.