부팅 할 때마다 왜 / var / run / sshd가 누락됩니까? systemd[1]: ssh.service: Service hold-off time over,

Proxmox 5.2-11에서 Ubuntu 16.04 컨테이너를 실행 중입니다. 최신 패치 1을 적용한 후 콘솔 또는 ssh를 통해 로그인 할 수 없습니다.

컨테이너 루트 FS를 하이퍼 바이저에 마운트하고에 추가 pts/0했습니다 /etc/security/access.conf(우리는 실행 pam_access). 콘솔에 루트 로그인을 허용했습니다. 우리는 한 root : lxc/tty0 lxc/tty1 lxc/tty2access.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하고 해당 파일이 존재하지 않습니다
여기에 이미지 설명을 입력하십시오



답변

당신이 한 실수는 sshd손 으로 시작하려고했습니다 .

대신 sshd공식적으로 시작하면 효과가 있습니다. 이 service명령은 배포에서 서비스를 시작하는 올바른 방법이 무엇인지 알고 있으며 다음과 같이 작동합니다.

service ssh start

sysv init 스크립트의 경우 필요한 모든 것입니다. 디렉토리가 누락 된 이유는 /var/run심볼릭 링크 /run이며 마운트 지점 /run이기 때문 tmpfs입니다. 즉, 부팅 /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디렉토리가 생성됩니다. 파일이 존재하고 올바른 내용을 가지고 있는지 확인하기 위해 필요한 것. 는 IF /var/run/sshd디렉토리는 여전히 실행할 때이 작성되는 경우가 확인할 수없는 systemd-tmpfiles --create수동.


답변

따라서 / 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 ??). 그렇지 않으면 같은 문제가 발생할 수 있습니다.


답변

분명히 이것은 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 컨테이너를 실행하면 symlinking 문제로 인해 systemd-tmpfile이 경로의 유효성을 검사 할 수 없으므로 서비스가 시작되지 않을 수 있습니다. (PSBM-90038)


답변

지난 몇 년 동안 시스템 문제로 많은 문제를 겪고 있었기 때문에 Ansible 동기화 지시문 대신이 문제가 발생한다는 것을 인정해야합니다 .

어떤 이유로,이 호스트에 ansbile 스크립트를 제공 한 후 root가 아닌 관리자 사용자가 소유 한 / 디렉토리 (/ etc, / opt 및 기타)를 그대로 두었습니다. 문제 chown를 해결하기 위해 실행 한 후 /var/run/sshd이제 부팅시 다시 생성됩니다.

모든 입력에 감사하지만 적어도 루트 디렉토리에 부적절한 소유권을 적용하면 정의되지 않은 시스템 동작이 발생한다는 의미에서 버그는 없습니다.


답변