OpenSSHサーバーは「タイムアウト」の結果として起動しません。

OpenSSHサーバーは「タイムアウト」の結果として起動しません。

2番目のopensshサーバーソースを変更してdebianで実行する必要があります。

ソースコードへの修正は実際には関連性がなく、とにかくログを増幅しました。

openssh-7.4p1編集した内容をまとめました

./configure --prefix=/opt --enable-pam --with-pam
make ; make install 

その後、次のようにしました/lib/systemd/system/ssh-mod.service

[Unit]
Description=OpenBSD Secure Shell server modified to log    
After=network.target auditd.service sshd.service
#ConditionPathExists=!/opt/etc/sshd-mod_not_to_be_run
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/opt/etc/default/ssh
ExecStart=/opt/sbin/sshd -D -f /opt/etc/sshd_config $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify

[Install]
WantedBy=multi-user.target
Alias=sshd-mod.service

/opt/etc/sshd_config次の行を含む標準のSSH構成ファイル。

Port 22
LogLevel INFO
ChallengeResponseAuthentication no
UsePAM yes
PrintMotd no
PidFile /var/run/sshd-mod.pid

これでサービスを開始します。

$ sudo systemctl start ssh-mod

コマンドが無限に繰り返されるので、エラーメッセージが表示されるのを待ちます。

Job for ssh-mod.service failed because a timeout was exceeded.
See "systemctl status ssh-mod.service" and "journalctl -xe" for details.

次に状態を確認します。

$ sudo systemctl status ssh-mod

● ssh-mod.service - OpenBSD Secure Shell server modified to log
    Loaded: loaded (/lib/systemd/system/ssh-mod.service; enabled; vendor preset: enabled)
    Active: activating (start) since Mon 2017-09-04 10:19:50 UTC; 12s ago
  Main PID: 15701 (sshd)
     Tasks: 1 (limit: 4915)
    CGroup: /system.slice/ssh-mod.service
            └─15701 /opt/sbin/sshd -D -f /opt/etc/sshd_config

Sep 04 10:19:50 mymachine systemd[1]: ssh-mod.service: Service hold-off time over, scheduling restart
Sep 04 10:19:50 mymachine systemd[1]: Stopped OpenBSD Secure Shell server modified to log.
Sep 04 10:19:50 mymachine systemd[1]: Starting OpenBSD Secure Shell server modified to log...
Sep 04 10:19:50 mymachine sshd[15701]: Server listening on 0.0.0.0 port 22.
Sep 04 10:19:50 mymachine sshd[15701]: Server listening on :: port 22.


$ journalctl -xe

Sep 04 10:19:50 mymachine systemd[1]: ssh-mod.service: Start operation timed out. Terminating.
Sep 04 10:19:50 mymachine sshd[15549]: Received signal 15; terminating.
Sep 04 10:19:50 mymachine systemd[1]: Failed to start OpenBSD Secure Shell server modified to log.
-- Subject: Unit ssh-mod.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- Unit ssh-mod.service has failed.
-- 
-- The result is failed.
Sep 04 10:19:50 mymachine systemd[1]: ssh-mod.service: Unit entered failed state.
Sep 04 10:19:50 mymachine systemd[1]: ssh-mod.service: Failed with result 'timeout'.
Sep 04 10:19:50 mymachine systemd[1]: ssh-mod.service: Service hold-off time over, scheduling restart
Sep 04 10:19:50 mymachine systemd[1]: Stopped OpenBSD Secure Shell server modified to log.
-- Subject: Unit ssh-mod.service has finished shutting down
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- Unit ssh-mod.service has finished shutting down.
Sep 04 10:19:50 mymachine systemd[1]: Starting OpenBSD Secure Shell server modified to log...
-- Subject: Unit ssh-mod.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- Unit ssh-mod.service has begun starting up.
Sep 04 10:19:50 mymachine sshd[15701]: Server listening on 0.0.0.0 port 22.
Sep 04 10:19:50 mymachine sshd[15701]: Server listening on :: port 22.

実際、サービスの結果は「有効」と表示されますが、ポート22にログインできるため(他のサーバーが別のポートでリッスンしているため)、シェルが機能しているようです。

原因が何なのかわかりません。ログが明確ではありません。

私は何を見逃していますか?なぜサービスがダウンするのですか?

より多くの情報が必要な場合はお知らせください。

上記の手順に従いました。Red Hat ドキュメント

ベストアンサー1

他のsystemdシステム(Ubuntu 16.04.3 LTS、HPCベンダーで可能な修正を提供)でも同じ動作を確認しました。

私が知っている限り、問題はType = notifyにあり、sshdはsd_notify(3)またはsystemdと同様の機能を使用して通知メッセージを送信または送信できません。したがって、systemdは起動されたというメッセージを受信しません。

私が今やったことは、/etc/systemd/system/ssh.service(/lib/systemd/system/ssh.serviceのコピー)にオーバーライドを作成し、タイプを通知からフォークに変更することです。その後、ExecStartから-Dを削除すると、sshdはそのデーモンをフォークします。

次に、systemctl daemon-reloadを実行し、SSHを再起動して動作することを確認してください。

正しい解決策は、Type = notifyを使用してsshサービスを再び機能させることですが、今日はそうする時間がありません。これが誰かに役立つことを願っています。

おすすめ記事