web-dev-qa-db-ja.com

起動するたびに/ var / run / sshdが見つからないのはなぜですか?

Proxmox 5.2-11でUbuntu 16.04コンテナを実行しています。最新のパッチを適用した後 1 コンソールまたはssh経由でログインできません。

ハイパーバイザーにコンテナールートFS=をマウントし、_pts/0_を_/etc/security/access.conf_に追加し(_pam_access_を実行)、コンソールへのルートログインを許可しました。 _root : lxc/tty0 lxc/tty1 lxc/tty2_が_access.conf_にあるので十分だと思ったので、なぜ_pts/0_が必要なのかがわかりません。

私はsshが実行されていないことに気付いたので、手動で開始しようとしました(_/usr/sbin/sshd -DDD -f /etc/ssh/sshd_config_)とこのエラーを受け取りました:

_Missing privilege separation directory: /var/run/sshd
_

手作業でディレクトリを作成し、sshを起動して、ようやくログインできましたが、再起動後も問題が解決しません。ディレクトリは作成されていません。 journalctlの有用なビットだけがあり、興味深い部分は「操作は許可されていません」に関するものだけですが、それ以上の情報はありません。

16.04についてはあまり詳しくないので、問題の詳細を知りたいのですが。 _/var/log/syslog_がない、または_/var/log/messages_のみ_kern.log_を使用しているため、迷子になります。

1

_systemd-sysv 229-4ubuntu21.9
libpam-systemd 229-4ubuntu21.9
libsystemd0 229-4ubuntu21.9
systemd 229-4ubuntu21.9
udev 229-4ubuntu21.9
libudev1 229-4ubuntu21.9
iproute2 4.3.0-1ubuntu3.16.04.4
libsasl2-modules-db 2.1.26.dfsg1-14ubuntu0.1
libsasl2-2 2.1.26.dfsg1-14ubuntu0.1
ldap-utils 2.4.42dfsg-2ubuntu3.4
libldap-2.4-2 2.4.42dfsg-2ubuntu3.4
libsasl2-modules 2.1.26.dfsg1-14ubuntu0.1
libgs9-common 9.25dfsg1-0ubuntu0.16.04.3
ghostscript 9.25dfsg1-0ubuntu0.16.04.3
libgs9 9.25dfsg1-0ubuntu0.16.04.3
_

[2]

_Nov 27 10:13:48 Host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 Host16 sshd[474]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 Host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:48 Host16 mysqld_safe[495]: Starting mysqld daemon with databases from /var/lib/mysql/mysql
Nov 27 10:13:48 Host16 mysqld[500]: 181127 10:13:48 [Note] /usr/sbin/mysqld (mysqld 10.0.36-MariaDB-0ubuntu0.16.04.1) starting as process 499 ...
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:48 Host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: Failed to reset devices.list on /system.slice/ssh.service: Operation not permitted
Nov 27 10:13:48 Host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 Host16 sshd[502]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 Host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:48 Host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: Failed to reset devices.list on /system.slice/ssh.service: Operation not permitted
Nov 27 10:13:48 Host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 Host16 sshd[503]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 Host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:48 Host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: Failed to reset devices.list on /system.slice/ssh.service: Operation not permitted
Nov 27 10:13:48 Host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 Host16 sshd[504]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 Host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:49 Host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:49 Host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:49 Host16 systemd[1]: ssh.service: Start request repeated too quickly.
Nov 27 10:13:49 Host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:49 Host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:49 Host16 systemd[1]: ssh.service: Failed with result 'start-limit-hit'.
Nov 27 10:13:49 Host16 systemd[1]: Started /etc/rc.local Compatibility.
Nov 27 10:13:49 Host16 systemd[1]: Failed to reset devices.list on /system.slice/plymouth-quit.service: Operation not permitted
Nov 27 10:13:49 Host16 systemd[1]: Starting Terminate Plymouth Boot Screen...
Nov 27 10:13:49 Host16 systemd[1]: Failed to reset devices.list on /system.slice/plymouth-quit-wait.service: Operation not permitted
Nov 27 10:13:49 Host16 systemd[1]: Starting Hold until boot process finishes up...
Nov 27 10:13:49 Host16 systemd[1]: Failed to reset devices.list on /system.slice/rc-local.service: Operation not permitted
Nov 27 10:13:49 Host16 systemd[1]: Started Hold until boot process finishes up.
Nov 27 10:13:49 Host16 systemd[1]: Started Container Getty on /dev/pts/1.
Nov 27 10:13:49 Host16 systemd[1]: Started Container Getty on /dev/pts/0.
Nov 27 10:13:49 Host16 systemd[1]: Failed to reset devices.list on /system.slice/console-getty.service: Operation not permitted
Nov 27 10:13:49 Host16 systemd[1]: Started Console Getty.
Nov 27 10:13:49 Host16 systemd[1]: Reached target Login Prompts.
Nov 27 10:13:49 Host16 systemd[1]: Started Terminate Plymouth Boot Screen.
Nov 27 10:13:52 Host16 nslcd[338]: accepting connections
Nov 27 10:13:52 Host16 nslcd[275]:    ...done.
Nov 27 10:13:52 Host16 systemd[1]: Started LSB: LDAP connection daemon.
Nov 27 10:13:52 Host16 systemd[1]: Failed to reset devices.list on /system.slice/cron.service: Operation not permitted
Nov 27 10:13:52 Host16 systemd[1]: Started Regular background program processing daemon.
Nov 27 10:13:52 Host16 systemd[1]: Failed to reset devices.list on /system.slice/atd.service: Operation not permitted
_

追加_systemd-tmpfiles --create_出力

本当に奇妙です...私は_/tmp_をチェックしましたが、それらのファイルは存在しません enter image description here

14
Server Fault

私が長年systemdで経験したのと同じくらい多くの問題について、私はこの問題が代わりにAnsible synchronizeディレクティブから生じたことを認めなければなりません。

なんらかの理由で、このホストをansbileスクリプトでプロビジョニングした後、rootではなく、管理ユーザーが所有する/ディレクトリ(および/ etc、/ optなど)を残しました。 chownを実行して問題を修正した後、/var/run/sshdがブート時に再び作成されるようになりました。

私はすべての入力に本当に感謝していますが、少なくともルートディレクトリに不適切な所有権を適用すると、未定義のシステム動作が発生するという意味では、ここにバグはありません。

2
Server Fault

あなたがした1つの間違いは、sshdを手動で開始しようとしたことです。

代わりに公式からsshdを起動した場合は、正常に機能するはずです。 serviceコマンドは、ディストリビューションでサービスを開始する正しい方法を認識しており、これは機能するはずです。

service ssh start

Sysv initスクリプトの場合、それがあなたがする必要があるすべてです。ディレクトリがない理由は、/var/run/runへのシンボリックリンクであり、/runtmpfsマウントポイントであるためです。つまり、起動するたびに/var/runは空で始まります。 serviceコマンドを使用する場合、/etc/init.d/sshスクリプトを使用してsshdを開始しますが、実行する前に、スクリプトは/var/run/sshdを作成します(存在しない場合)。

systemdでは、動作が少し異なります。次の内容の/usr/lib/tmpfiles.d/sshd.confというファイルがあります。

d /var/run/sshd 0755 root root

これにより、起動時に/var/run/sshdディレクトリが作成されます。ファイルが存在し、内容が正しいことを確認するために必要なもの。 /var/run/sshdディレクトリがまだ見つからない場合は、systemd-tmpfiles --createを手動で実行したときに作成されたかどうかを確認できます。

11
kasperd

したがって、/ run(およびそれにシンボリックリンクされた/ var/run)は、再起動するたびに再作成されます。 systemd-tmpfilesが(/ var)/ run/sshdを含む一部のファイルに対してそれを行っていないことを除いて。

どうやら、これはOpenVZカーネルのアップグレードによって修正されています。しかし、実際に修正するには、次のように編集します/usr/lib/tmpfiles.d/sshd.confと削除/var行からd /var/run/sshd 0755 root root代わりに読む:d /run/sshd 0755 root root

以上です..!

そして、openssh-serverがアップグレードされるとき、彼らがこのバグを修正することを望みます(またはそれは本当にsystemdのバグかopenvzですか?)-そうでなければ、同じ問題に遭遇する可能性があります。

11
pepa65

どうやらこれは、OpenVZカーネル2.6.32-042stab134.7以降を実行しているときに解決されます。どういうわけかsystemdの起動スクリプトで修正が不可能であるのは不思議です。おそらく、起動後に/ run/sshd /を自動的に作成し、次にsshdを起動するような醜いハックが機能します。

私のsystemd-tmpfiles --createの出力:

[/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.
fchownat() of /run/named failed: Invalid argument
Failed to openat(/dev/simfs): Operation not permitted
Failed to validate path /var/run/screen: Too many levels of symbolic links
Failed to validate path /var/run/sshd: Too many levels of symbolic links
Failed to validate path /var/run/Sudo: Too many levels of symbolic links
Failed to validate path /var/run/Sudo/ts: Too many levels of symbolic links
fchownat() of /run/systemd/netif failed: Invalid argument
fchownat() of /run/systemd/netif/links failed: Invalid argument
fchownat() of /run/systemd/netif/leases failed: Invalid argument
fchownat() of /run/log/journal failed: Invalid argument
fchownat() of /run/log/journal/e9e1d08bc42c48999865b96c250f40cc failed: Invalid argument
fchownat() of /run/log/journal/e9e1d08bc42c48999865b96c250f40cc/system.journal failed: Invalid argument

OpenVZ 2.6.32-042stab134.7の変更ログには次のように書かれています:

Systemd 229-4ubuntu21.9でUbuntuコンテナーを実行すると、systemd-tmpfilesがシンボリックリンクの問題によりパスを検証できなかったため、サービスの開始に失敗する可能性があります。 (PSBM-90038)

4
pepa65