1

Когда я запускаю процесс sshd с помощью systemctl, процесс запускается успешно, но заканчивается через 5 секунд. Когда я запускаю команду ExecStart в командной строке, ssh запускается без проблем.

Может кто-нибудь сказать мне, почему systemd может отправлять sigterm в sshd, когда начал использовать systemctl?

Я использую SLES12-SP2.

Вывод "systemctl status sshd" сразу после запуска "systemctl start sshd":

● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2017-07-09 12:51:10 BST; 2s ago
  Process: 21727 ExecStartPre=/usr/sbin/sshd-gen-keys-start (code=exited, status=0/SUCCESS)
 Main PID: 21734 (sshd)
    Tasks: 1 (limit: 8192)
   CGroup: /system.slice/sshd.service
           └─21734 /usr/sbin/sshd -D -ddd

Jul 09 12:51:10 Duke sshd[21734]: debug1: rexec_argv[2]='-ddd'
Jul 09 12:51:10 Duke sshd[21734]: debug3: oom_adjust_setup
Jul 09 12:51:10 Duke sshd[21734]: debug1: Set /proc/self/oom_score_adj from 0 to -1000
Jul 09 12:51:10 Duke sshd[21734]: debug2: fd 3 setting O_NONBLOCK
Jul 09 12:51:10 Duke sshd[21734]: debug1: Bind to port 22 on 0.0.0.0.
Jul 09 12:51:10 Duke sshd[21734]: Server listening on 0.0.0.0 port 22.
Jul 09 12:51:10 Duke sshd[21734]: debug2: fd 4 setting O_NONBLOCK
Jul 09 12:51:10 Duke sshd[21734]: debug3: sock_set_v6only: set socket 4 IPV6_V6ONLY
Jul 09 12:51:10 Duke sshd[21734]: debug1: Bind to port 22 on ::.
Jul 09 12:51:10 Duke sshd[21734]: Server listening on :: port 22.

Вывод "systemctl status sshd" примерно через 5 секунд:

● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Sun 2017-07-09 12:51:12 BST; 2s ago
  Process: 21734 ExecStart=/usr/sbin/sshd -D -ddd $SSHD_OPTS (code=exited, status=0/SUCCESS)
  Process: 21727 ExecStartPre=/usr/sbin/sshd-gen-keys-start (code=exited, status=0/SUCCESS)
 Main PID: 21734 (code=exited, status=0/SUCCESS)

Jul 09 12:51:10 Duke sshd[21734]: debug2: fd 3 setting O_NONBLOCK
Jul 09 12:51:10 Duke sshd[21734]: debug1: Bind to port 22 on 0.0.0.0.
Jul 09 12:51:10 Duke sshd[21734]: Server listening on 0.0.0.0 port 22.
Jul 09 12:51:10 Duke sshd[21734]: debug2: fd 4 setting O_NONBLOCK
Jul 09 12:51:10 Duke sshd[21734]: debug3: sock_set_v6only: set socket 4 IPV6_V6ONLY
Jul 09 12:51:10 Duke sshd[21734]: debug1: Bind to port 22 on ::.
Jul 09 12:51:10 Duke sshd[21734]: Server listening on :: port 22.
Jul 09 12:51:12 Duke systemd[1]: Stopping OpenSSH Daemon...
Jul 09 12:51:12 Duke systemd[1]: Stopped OpenSSH Daemon.
Jul 09 12:51:12 Duke sshd[21734]: Received signal 15; terminating.

Содержимое /usr/lib/systemd/system/sshd.service:

[Unit]
Description=OpenSSH Daemon
After=network.target

[Service]
EnvironmentFile=-/etc/sysconfig/ssh
ExecStartPre=/usr/sbin/sshd-gen-keys-start
ExecStart=/usr/sbin/sshd -D -ddd $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=never

[Install]
WantedBy=multi-user.target

Примечание: я изменил Restart, чтобы никогда не быть всегда, чтобы я мог видеть последние сообщения от sshd. SSHD прекращается в обоих случаях.

1 ответ1

1

Вы добавили аргументы -ddd в sshd . Взглянув на страницу руководства, где вы найдете эти аргументы, вы можете заметить следующее:

-d

Режим отладки. Сервер отправляет подробный отладочный вывод со стандартной ошибкой и не помещает себя в фоновый режим. Сервер также не будет разветвляться и будет обрабатывать только одно соединение. Эта опция предназначена только для отладки на сервере. Несколько опций -d повышают уровень отладки. Максимум 3.

Так что это именно то, что ожидается.

Если вы хотите видеть сообщения отладки, используйте LogLevel DEBUG3 в sshd_config . Это не повлияет на это поведение, но будет регистрировать сообщения.

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