ssh.serviceがsystemdによって有効になっているにもかかわらず、起動中に自動的に起動しないのはなぜですか?

ssh.serviceがsystemdによって有効になっているにもかかわらず、起動中に自動的に起動しないのはなぜですか?

私はRaspberry Pi 4でDebian 11を使用しています(画像が見つかりました)ここ)。 sshdが正しく設定され(/etc/ssh/sshd_configのみを編集し、残りは完全にシステムインストールで行われました)、手動で起動すると正常に動作します。ただし、起動時にsystemdによって自動的に起動されるわけではありません。sudo systemctl 状態 sshd次を返します。

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:sshd(8)
             man:sshd_config(5)

Journalctlの出力にはsshに関する内容はありません。

内容はこれです/lib/systemd/system/ssh.service:

[Unit]
Description=OpenBSD Secure Shell server
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/sbin/sshd -t
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/usr/sbin/sshd -t
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
RuntimeDirectory=sshd
RuntimeDirectoryMode=0755

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

文書sshd_not_to_be_run存在しない。ネットワーク。活動的な。トラブルシューティングのために auditd もインストールしましたが、自動的に正常に起動しましたが、再起動後も ssh.service はまだ機能しません。

アイデアはありません...


修正する:

すべての接続要求がsshdプロセスを生成することがわかりました。これはsystemd自体によって管理され、一部の外部コンピュータがマイコンピュータに接続しようとすると、ログにはっきりと印刷されます。

oct. 30 13:09:30 RaspServeur systemd[1]: Started OpenBSD Secure Shell server per-connection daemon (117.68.2.55:45784).
░░ Subject: L'unité (unit) [email protected]:22-117.68.2.55:45784.service a terminé son démarrage
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░ 
░░ L'unité (unit) [email protected]:22-117.68.2.55:45784.service a terminé son démarrage, avec le résultat done.
oct. 30 13:09:30 RaspServeur audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj==unconfined msg='[email protected]:22-117.68.2.55:45784 comm="systemd" exe="/usr/lib/systemd/systemd" ho>
oct. 30 13:09:33 RaspServeur sshd[1861]: error: kex_exchange_identification: Connection closed by remote host
oct. 30 13:09:33 RaspServeur sshd[1861]: Connection closed by 117.68.2.55 port 45784
oct. 30 13:09:33 RaspServeur systemd[1]: [email protected]:22-117.68.2.55:45784.service: Succeeded.
░░ Subject: Unit succeeded
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░ 
░░ The unit [email protected]:22-117.68.2.55:45784.service has successfully entered the 'dead' state.
oct. 30 13:09:33 RaspServeur audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj==unconfined msg='[email protected]:22-117.68.2.55:45784 comm="systemd" exe="/usr/lib/systemd/systemd" hos>

これは、デフォルト設定を使用してsshdを並列にインストールするのと同じです。 sshd.serviceを手動で起動しないと、私の設定(使用する特定のポート番号などの設定)は機能しません。ただし、デフォルトポートを使用してそのシャドウSSHDに正常に接続できます。systemctl 状態 sshdまだサービス終了を報告しています...

状況が変になりました。これでSDカードを消去し、2本の指で事前設定されていない別のディストリビューションのイメージをインストールできます。

答え1

質問者の質問と同じですか?問題#442181持っていますか?つまり、バインドするインターフェイス/アドレスがまだ準備されていないため、sshdは起動時に起動できません。サーバーソケットに非標準ポートを指定したと言いましたが、特定のネットワークインターフェースおよび/またはIPアドレスも指定しましたか?

しかし、systemdが標準設定を使用して接続固有のデーモンを起動する理由はわかりません。提案したように、これは基本的なシステム構成の一部である可能性があります。存在する問題#507705彼らは、接続固有のサービス生成を提供する機能であるシステム化された「ソケットのアクティブ化」について話します。というシステム単位ファイルを探しますssh.socket。これを使用して、man systemd.socketこの機能のしくみに関する情報を取得できます。

systemctl status ssh.socket編集:systemdのSSHサーバーソケットが有効になっていることを確認できるはずです。

答え2

sshdを手動で起動すると、systemdはそれを起動したものとして登録しないため、systemctlが何も表示しないことが合理的です。各sshdは、接続が確立された後に接続を処理する別のプロセスに分岐する受信プロセスです。ps複数のsshdプロセスがある場合はそれを反映します。 sshd リスナーを終了しても接続を処理する他の sshd プロセスは引き続きアクティブです。

sshdを起動してsystemctlを実行すると、sshdを起動します。これは2つのsshdを起動するのと同じです。両方が同じポートを使用しようとするとブロックされる可能性があります。

お役に立てば幸い

関連情報