Portál AbcLinuxu, 19. května 2022 04:49



Dotaz: systemd: jak spustit sshd v emergency mode?

Jendа avatar 22.8.2020 22:33 Jendа | skóre: 77 | blog: Jenda | JO70FB
systemd: jak spustit sshd v emergency mode?
Přečteno: 670×
Odpovědět | Admin
Příloha:
Když se mi systemd dostane do emergency mode (nejsnazší způsob, jak si to zkusit, je napsat nesmysl do fstabu, třeba echo "LABEL=TestLabel /mnt/label xfs defaults 1 1" >> /etc/fstab, a rebootnout), tak spustí síť ale nespustí sshd. Takže stroj normálně pingá, je vidět, že naběhl, ale nedá se tam přihlásit a opravit to, a protože nemám přístup na konzoli, tak mám smůlu. Je to poněkud frustrující. Když v konzoli spustím sshd ručně, tak samozřejmě normálně naběhne a funguje.

Googlil jsem, překvapilo mě, že jsem toho moc nenašel, a nejnadějněji vypadá udělat
systemctl add-wants emergency.target sshd.service
Jenže to emergency mode zdá se komplet přeskočí (wtf), tak se bojím, že pokud bude k emergency mode nějaký jiný/závažnější důvod, tak se to kreativně rozbije nějak jinak a třeba to ani nespustí shell a nepůjde to tak opravit ani pokud konzoli mám.

Jak se tohle má správně řešit? A myslíte si, že je to na bugreport? Podle mě když to spustí síť, tak to má rovnou zkusit spustit i sshd.

Je to Debian stable, ale řešili to třeba i v redhatu.
Řešení inflace: přidat do spotřebního koše Bitcoin

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.8.2020 23:40 jiwopene | skóre: 30 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: systemd: jak spustit sshd v emergency mode?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pamatuji-li si to dobře, emergency mode běží z initramfs (bez přimountování běžného root FS, případně do připojeného /něco). Je sshd v initramfs?
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
Jendа avatar 22.8.2020 23:46 Jendа | skóre: 77 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: systemd: jak spustit sshd v emergency mode?
Ne, normálně to připojilo / (dokonce read-write) a spustilo normální bash z disku.
Řešení inflace: přidat do spotřebního koše Bitcoin
Řešení 3× (vandrovnik, Bherzet, Jendа (tazatel))
Jendа avatar 22.8.2020 23:45 Jendа | skóre: 77 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: systemd: jak spustit sshd v emergency mode?
Odpovědět | | Sbalit | Link | Blokovat | Admin
atalax mi to vysvětlil po IRC.

Problém je v tom, že ssh závisí, jako „obyčejná“ unita, na sysinit.target (což není explicitně napsané, je to Default Dependencies), jak můžeme vidět v systemctl list-dependencies ssh. sysinit.target závisí na local-fs.target a různých dalších věcech, a když něco z toho selže, tak se sysinit nestane, a tím se nespustí žádné ostatní „obyčejné“ unity.

Řešení je třeba následující: vyrobím unitu /etc/systemd/system/sshd-rescue.service, která bude přesnou kopií distribuční ssh unity (systemctl cat ssh), až na vyznačené změny:
[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
DefaultDependencies=no

[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=emergency.target
#Alias=sshd.service
Tu pak stačí enablovat (systemctl enable sshd-rescue) a pak už se sshd v rescue spustí, a „normální“ ssh se spustí při úspěšném bootu.

Ještě upozornění, že do toho rescue sshd se nedá přihlásit jako ne-root: vypíše to
System is booting up. Unprivileged users are not permitted to log in yet. Please come back later. For technical details, see pam_nologin(8).
Já mám přihlášení roota klíčem povolené, ale pokud ho zakazujete, tak si v té rescue unitě asi dejte extra konfigurák, kde bude povolené.
Řešení inflace: přidat do spotřebního koše Bitcoin
23.8.2020 10:02 dustin | skóre: 62 | blog: dustin
Rozbalit Rozbalit vše Re: systemd: jak spustit sshd v emergency mode?
Díky moc, velice užitečné.
Jendа avatar 14.1. 00:57 Jendа | skóre: 77 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: systemd: jak spustit sshd v emergency mode?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chtěl bych jen doplnit, že v aktuálním Debianu už je defaultně rescue-ssh.target, který sshd spustí (stále se lze přihlásit jen jako root, takže pozor pokud roota zakazujete).
Řešení inflace: přidat do spotřebního koše Bitcoin

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.