В чем разница между /etc/init.d/sshd start и /usr/sbin/sshd?

Вопрос или проблема

У меня проблемы с SSH без пароля. Я проверил, перепроверил и снова проверил, что всё настроено правильно.

Обе машины работают на RHEL6, и когда целевая машина впервые загружается, SSH без пароля не работает. Если я остановлю SSH (service sshd stop или /etc/init.d/sshd stop), а затем запущу его напрямую (/usr/sbin/sshd), SSH без пароля работает нормально.

Если я запускаю SSH через службу (service sshd start или /etc/init.d/sshd start), SSH без пароля не работает.

Просто для тестирования я пробовал закомментировать всю функцию start() в /etc/init.d/sshd и заменить её на /usr/sbin/sshd – это всё равно не позволяет использовать SSH без пароля. Я полагаю, что это означает, что что-то в файле /etc/init.d/sshd вызывает проблему, но я недостаточно разбираюсь в Linux, чтобы сузить проблему.

Похоже, версия init.d запускается с другим серверным ключом, который не распознается, но это должно выдавать предупреждение на клиенте. Возможно, служба считывает конфигурацию из какого-то другого места. Также возможно, что у вас работает сервис xinetd, который перехватывает входящие соединения на порт 22.

Попробуйте запустить службу описанными методами и посмотрите на разницу в выводе

ps aux | grep [s]shd 

Это может дать вам подсказку о том, какой конфигурационный файл используется. Также вы можете перепроверить, что sshd прослушивает порт 22 после его запуска через /etc/init.d/sshd. Это можно сделать с помощью

netstat -ntpl 

Или, проверив, что работают “полные” входы с паролем.

Существует разница в том, как они выполняются, проверьте этот CentOS баг. Чтобы исправить это, удалите первую строку “#!/bin/bash” из /etc/init.d/sshd.

.

Ответ или решение

В данной ситуации рассматриваются две команды для управления службой SSH на системах RHEL6: /etc/init.d/sshd start и /usr/sbin/sshd. Проблема заключается в том, что при стандартном запуске службы SSH демоном через init.d, беззапросная аутентификация (passwordless SSH) не работает, в то время как прямая запуск /usr/sbin/sshd позволяет использовать данную функциональность.

Основные различия между командами

  1. Стартовые скрипты vs. Прямой запуск демона:

    • /etc/init.d/sshd start: Эта команда запускает скрипт, который обычно предустановлен и выполняет ряд дополнительных действий, таких как настройка окружения и загрузка конфигурационных файлов. Скрипт может содержать переменные, инициализацию определенных параметров и может быть модифицирован администратором системы.

    • /usr/sbin/sshd: Прямой запуск демона SSH, минуя любой процесс предварительной настройки. Это обеспечивает чистую загрузку службы по умолчанию, полагаясь на стандартные параметры и конфигурационные файлы, прописанные в sshd_config.

  2. Проблемы конфигурации:

    Причина, по которой беззапросное подключение не функционирует при использовании стартовых скриптов, может быть связана с изменением конфигурационных параметров или некорректными изменениями в самом /etc/init.d/sshd. Такой скрипт может, в свою очередь, обращаться к различным конфигурационным файлам или загружать некорректные ключи SSH.

  3. Возможная проблема с использованием ключей:

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

Предложения по устранению проблем

  1. Анализ процесса:

    • Используйте ps aux | grep [s]shd, чтобы сравнить, какие процессы запускаются в каждом случае. Это поможет выявить различия в параметрах запуска или конфигурируемых файлах.
  2. Мониторинг сетевых соединений:

    • Запустите netstat -ntpl, чтобы убедиться, что sshd слушает на порте 22, и проверьте, что он правильно принимает подключения без пароля.
  3. Изменение скрипта init.d:

    • Согласно упомянутой ошибке (CentOS Bug), попробуйте удалить строку #!/bin/bash из файла /etc/init.d/sshd. Это может решить проблемы, связанные с неправильной интерпретацией команд или окружения.

Технические рекомендации

  • Комплексная проверка конфигураций: Проверьте все пути конфигурационных файлов и убедитесь, что все параметры в конфигурации /etc/ssh/sshd_config соответствуют требованиям системы, особенно параметры, относящиеся к аутентификации и ключам.

  • Анализ xinetd: Дополнительно проверьте наличие и конфигурацию любых служб xinetd, которые могут перехватывать подключение к порту 22.

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

Оцените материал
Добавить комментарий

Капча загружается...