Я пытаюсь запустить службы vsftpd и sshd, используя xinetd. мои конфигурационные файлы следующие.

  1. /etc/xinetd.conf

    defaults
    {
    instances               = 60
    log_type                = FILE /var/log/xinetdlog
    log_on_success          = HOST PID
    log_on_failure          = HOST
    cps                     = 25 30
    only_from       = localhost
    }
    includedir /etc/xinetd.d
    
  2. /etc/xinetd.d/ftp

    service ftp
    {
    disable = no
    server = /usr/sbin/vsftpd
    server_args = -l
    user = root
    socket_type = stream
    protocol = tcp
    wait = no
    instances = 4
    flags = REUSE
    nice = 10
    log_on_success      += DURATION HOST USERID
    only_from = 127.0.0.1 10.0.0.0/24
    }
    
  3. /etc/xinetd.d/ssh

    service ssh
    {
    disable = no
    log_on_failure += USERID
    server = /usr/sbin/sshd
    user = root
    socket_type = stream
    protocol = tcp
    wait = no
    instances = 20
    flags = REUSE
    only_from = 127.0.0.1 10.0.0.0/24
    }
    

Несмотря на то, что я включил атрибут only_from, сервер vsftp, а также сервер ssh отказывают в подключении от localhost. в то время как серверы vsftp и ssh работают нормально по отдельности, когда я проверяю "service vsftpd start" и "service ssh start". когда я сделал отладку с помощью терминала xinetd -d, я получил вывод

13/10/20@00:06:08: DEBUG: 3592 {cnf_start_services} Started service: ftp
13/10/20@00:06:08: DEBUG: 3592 {cnf_start_services} Started service: ssh
13/10/20@00:06:08: DEBUG: 3592 {cnf_start_services} mask_max = 8, services_started = 2
13/10/20@00:06:08: NOTICE: 3592 {main} xinetd Version 2.3.14 started with libwrap loadavg options compiled in.
13/10/20@00:06:08: NOTICE: 3592 {main} Started working: 2 available services
13/10/20@00:06:08: DEBUG: 3592 {main_loop} active_services = 2
13/10/20@00:06:16: DEBUG: 3592 {main_loop} select returned 1
13/10/20@00:06:16: DEBUG: 3592 {server_start} Starting service ftp
13/10/20@00:06:16: DEBUG: 3592 {main_loop} active_services = 2
13/10/20@00:06:16: DEBUG: 3607 {exec_server} duping 9
13/10/20@00:06:16: DEBUG: 3592 {main_loop} active_services = 2
13/10/20@00:06:16: DEBUG: 3592 {main_loop} select returned 1
13/10/20@00:06:16: DEBUG: 3592 {check_pipe} Got signal 17 (Child exited)
13/10/20@00:06:16: DEBUG: 3592 {child_exit} waitpid returned = 3607
13/10/20@00:06:16: DEBUG: 3592 {server_end} ftp server 3607 exited
13/10/20@00:06:16: DEBUG: 3592 {svc_postmortem} Checking log size of ftp service
13/10/20@00:06:16: INFO: 3592 {conn_free} freeing connection
13/10/20@00:06:16: DEBUG: 3592 {child_exit} waitpid returned = -1

обе службы начинают работу, но ни одна из них не работает.

после 3-4 часов я все еще не понимаю об этой ошибке. Любая помощь будет оценена. Спасибо!

1 ответ1

0

Справочная страница signal(7) гласит:

Signal     Value     Action   Comment
---------------------------------------------------------
SIGCHLD   20,17,18    Ign     Child stopped or terminated

Это означает, что всякий раз, когда дочерний процесс останавливается, например, vsftpd или sshd, родительский элемент - xinetd - получает сигнал 17 (который будет игнорироваться по умолчанию, но в вашем случае это не так).

Вам также нужно запустить sshd с -i:

Указывает, что sshd запускается из inetd(8). Обычно sshd не запускается из inetd, потому что ему нужно сгенерировать ключ сервера, прежде чем он сможет ответить клиенту, а это может занять десятки секунд. Клиенты должны будут ждать слишком долго, если ключ будет обновляться каждый раз. Однако при небольших размерах ключей (например, 512) использование sshd из inetd может быть осуществимо.

Я не знаю, какую версию vsftpd вы используете, но vsftpd-2.2.2-6.el6_0.1 работает нормально, если я задаю listen=NO в /etc/vsftpd/vsftpd.conf и запускаю его без каких-либо аргументов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .