Neden her önyüklemeden sonra / var / run / sshd eksik?


14

Proxmox 5.2-11 altında bir Ubuntu 16.04 kapsayıcısı çalıştırıyorum. En son yamaları uyguladıktan sonra 1 Konsola veya ssh üzerinden giriş yapamıyorum.

Ben hipervizör üzerindeki konteyner kök FS monte ve katma pts/0kadar /etc/security/access.conf(biz koşmak pam_accesskonsola izin kök giriş) ve. Biz var root : lxc/tty0 lxc/tty1 lxc/tty2içinde access.confhangi ı yeterli olduğunu düşünüyorum bu yüzden gerekli neden pts/0şimdi şaşırtıcı.

Ben ssh çalışma (yani ( /usr/sbin/sshd -DDD -f /etc/ssh/sshd_config) elle başlatmayı denedim çalışmıyor ve bu hatayı aldı fark ettim :

Missing privilege separation directory: /var/run/sshd

Dizini elle oluşturdum, başladım sshve son olarak giriş yapabildim, ancak yeniden başlattıktan sonra sorun devam ediyor. Dizin oluşturulmuyor. Sadece yararlı bitleri journalctlve tek ilginç kısmı "operasyona izin verilmez" ama daha fazla bilgi hakkında bir şeydir.

16.04 hakkında fazla bilgim yok, bu yüzden sorun hakkında daha fazla bilgiyi nasıl bulabileceğimi merak ediyorum. Hiç var /var/log/syslogya /var/log/messagessadece kern.logçok nazik kayıp.

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

Eklenen systemd-tmpfiles --createçıktı

Gerçekten tuhaf .... Kontrol ettim /tmpve bu dosyalar yok resim açıklamasını buraya girin

Yanıtlar:


11

Yaptığınız bir hata sshdelle başlamaya çalışmaktı .

Bunun yerine sshdresmi yollarla başlarsanız , sadece işe yarayacaktır. serviceKomutu dağılımına bir hizmeti başlatmak için doğru yolu ne olduğunu bilir ve bu çalışması gerekir:

service ssh start

Sysv init komut dosyaları durumunda, yapmanız gereken her şey budur. Dizin eksik nedeni olduğunu /var/runişaret eden bir sembolik olduğunu /runve /runbir olduğunu tmpfsbağlama noktası. Bu, her önyüklemede /var/runboş başlayacağı anlamına gelir . serviceKomutu kullandığınızda, komut /etc/init.d/sshdosyası başlatmak için kullanılır, sshdancak bunu yapmadan önce komut dosyası yoksa oluşturur /var/run/sshd.

İle systemdşeylerin biraz farklı çalışır. /usr/lib/tmpfiles.d/sshd.confBu içeriğe sahip bir dosya olacak :

d /var/run/sshd 0755 root root

Önyükleme sırasında bu /var/run/sshddizinin oluşturulmasına neden olmalıdır . Dosyanın var olduğunu ve doğru içeriğe sahip olduğunu doğrulamak için gerekenler. Eğer /var/run/sshddizin hala çalıştırdığınızda oluşturulduğu alır olmadığını öğrenebilirsiniz eksik systemd-tmpfiles --createelle.


Bu iyi bir fikir ama aslında sistemin önyüklemede yapmaya çalıştığı aynı şeyi yapıyor (ve aynı şekilde başarısız oldu). Gerçekten merak ettiğim şey, privsep dizininin neden normal yollarla oluşturulmadığı. Disk hatası var mı? İzin sorunu mu var? kilit dosyası? Yanına bakmak için başka bir yer var journalctlmı?
Sunucu Hatası

@ServerFault Belirli koşullar altında /etc/init.d/sshçalıştırılmaz ve systemctlbunun yerine kullanılır. Ve ne zaman sshdbaşlatılır systemctldizinde yaratılmaz. Bu, tam olarak neyin değiştiği ve bu dizinin systemctlkullanıldığında nasıl oluşturulması gerektiği gibi yarın kazmaya çalışacağım birkaç açık soru bırakıyor .
kasperd

@ServerFault kullanırken systemctlbu en /etc/init/ssh.confdizini oluşturmak için sorumlu olduğu. Ben tamamen güncel bir Ubuntu 16.04 üzerinde test ve dizin önyükleme sırasında oluşturulur. Ancak bazı nedenlerden dolayı kullanıldığında oluşmaz service ssh start. Bazı systemdilgili paketlerin son güncellemeleri var , ancak bu dizinin oluşturulmasıyla ilgili davranışların değiştiğine dair bir kanıt görmüyorum. Ve test ettiğimde önyükleme sırasında oluşturulur. O zaman soru /etc/init/ssh.confdoğru içeriğinizin olup olmadığıdır .
kasperd

@ServerFault Ben /etc/init/ssh.confde /usr/lib/tmpfiles.d/sshd.conftarafından kullanılan gibi görünüyor yanılmış olabilir systemd-tmpfiles --create. Does systemd-tmpfiles --createeksik oluşturmak /var/run/sshddizin?
kasperd

systemd-tmpfiles --createÇıktıdan gelen soruya resim eklendi . "Symlinks" systemd hakkında şikayet ediyor (/tmp/.X11-unix) bile yok bu /tmp/yüzden nereden aldığı hakkında hiçbir fikrim yok. Tüm yardımlarınız için teşekkürler, ama devam edeceğim.
Sunucu Hatası

11

Yani / run (ve / var / run symlinked) her yeniden başlatmada yeniden oluşturulur. Ancak systemd-tmpfiles, (/ var) / run / sshd dahil bazı dosyalar için bunu yapmaz.

Görünüşe göre, bu bir OpenVZ çekirdek yükseltmesi ile düzeltildi. Ama aslında düzeltmek için şimdi okumak /usr/lib/tmpfiles.d/sshd.confve düzenlemek /variçin satırdan kaldırmak d /var/run/sshd 0755 root root: d /run/sshd 0755 root root

Ve bu kadar..!

Ve openssh-server yükseltildiğinde, bu hatayı düzelttiklerini umuyoruz (veya gerçekten systemd'de bir hata mı? Veya openvz ??) - aksi takdirde aynı problemle karşılaşabilirsiniz.


1
Çekirdek yükseltmesini beklerken düzeltme için +1. Benim durumumda olması gerekiyordu: "d / run / sshd 0755 kök kök"
paulzag

1
@paulzag Bu benim için de işe yaradı. @ Pepa65 demek istediğini merak ediyorum d /run/sshd 0755 root root, çünkü yönleri sadece /varkısmı kaldırmak için söylüyorlar (cevapta verdikleri kod her ikisine de sahip /varve /runkaldırılmış olsa bile ).
Stephen Schrauger

4

Görünüşe göre bu bir OpenVZ çekirdeği 2.6.32-042stab134.7 veya daha yeni bir sürümü çalıştırıldığında çözülüyor. Systemd start komut dosyalarında bir şekilde olası bir düzeltme olmadığını garip buluyorum. Muhtemelen başlattıktan sonra sshd'yi otomatik olarak oluşturma / çalıştırma / sshd / oluşturma gibi çirkin bir hack işe yarardı.

Benim çıktı 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 değişiklik günlüğü şöyle diyor:

Systemd 229-4ubuntu21.9 ile Ubuntu kapsayıcılarının çalıştırılması, systemd-tmpfiles symlinking sorunları nedeniyle yolu doğrulayamadığı için hizmetlerin başlatılamamasına neden olabilir. (PSBM-90038)


2

Yıllar boyunca systemd ile yaşadığım kadar fazla sorun için, bu sorunun Ansible senkronizasyon yönergesi yerine itiraf etmeliyim .

Bazı nedenlerden dolayı, bu ana makineyi ansbile komut dosyalarımızla sağladıktan sonra, kökten değil, bir yönetici kullanıcının sahip olduğu / dizinini (/ etc, / opt ve diğerlerini) bıraktı. Bir chownşeyleri düzeltmek için çalıştırdıktan sonra /var/run/sshd, şimdi yeniden önyükleme üzerinde oluşturulur.

Tüm girdiyi gerçekten takdir ediyorum, ancak en azından kök dizinlere uygunsuz sahiplik uygulanmasının tanımlanmamış sistem davranışına neden olması açısından burada bir hata yok.


Bu! Bahşiş için teşekkürler, Ansible bizim durumumuzda suçlu oldu!
Beenish Khan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.