
Ich implementiere ein einfaches Bereitstellungsskript und für sshd_config muss ich lediglich PermitRootLogin yes in PermitRootLogin without-password ändern. Ich habe die Dokumentation durchgelesen und sie erwähnt dies nicht, aber das heißt nicht, dass es unmöglich ist.
Kann ich ein zweites PermitRootLogin angeben? D. h. echo 'PermitRootLogin ohne Passwort' >> /etc/ssh/sshd_config
Wenn ja, ist das sicher?
Aktualisierungen basierend auf Kommentaren:
1) Mir ist bewusst, dass ich die Datei analysieren und die Variable ändern könnte. Meine Frage bleibt jedoch weiterhin bestehen.
Antwort1
NEIN.
Sie können dies einfach testen, indem Sie die Zeile hinzufügen und prüfen, ob Sie sich anmelden können. Anschließend können Sie das erste Vorkommen auskommentieren, den Dienst neu starten und erneut testen.
Grund:OpenSSH servconf.c
hat Funktion
process_server_config_line()
in den Zeilen 1200-2171 (für 7.9p1)- umgestaltet, um
process_server_config_line_depth()
die Zeilen 1260-2371 aufzurufen (für 8.3p1).
Alle globalen Anweisungen werden nur beim Start verarbeitet und globale Anweisungen werden nur einmal verarbeitet. Die Einstellung bleibt so, wie sie beim ersten Vorkommen war.
Andererseits kann die zweimalige Verwendung derselben Anweisung zu Missverständnissen führen.
Bitte überdenken Sie die Analyse der Datei. Gegebenenfalls können Sie auch die gesamte Datei ersetzen.
Antwort2
TL;DR JaDebian und Derivate unterstützen frühe Include-Dateien.
DebianUndUbuntuhaben " Include
"-Direktiven am Anfang ssh
und sshd
in Konfigurationsdateien:
/etc/ssh/ssh_config:19:Include /etc/ssh/ssh_config.d/*.conf
/etc/ssh/sshd_config:13:Include /etc/ssh/sshd_config.d/*.conf
Ich stimme den vorherigen Antworten zu. Der zuerst gefundene Wert hat Vorrang, wenn Include
Verzeichnisdateien zuerst verarbeitet werden.
echo PermitRootLogin without-password > /etc/ssh/sshd_config.d/PermitRootLogin.conf
Antwort3
Nein, die meisten Einstellungen verwenden nur den ersten Wert, auf den sie stoßen. Mit der Einstellung „X11Forwarding“ lässt sich dies leicht testen. Allerdings können Sie möglicherweise die benutzerspezifischen Override-Einstellungen nutzen, um dasselbe zu ermöglichen. Diese werden normalerweise unten markiert und würden daher für Ihr Ziel des Anhängens besser funktionieren.
Allerdings wäre sed, wie die anderen bereits erwähnt haben, eine viel sauberere Lösung.
sed -i 's/PermitRootLogin yes/PermitRootLogin without-password/g' /etc/ssh/sshd_config
Antwort4
Änderung früherer Antworten. Ab sofort gilt dieHandbuchfürsshd_configDie Datei beginnt mit „Für jedes Schlüsselwort wird der erste erhaltene Wert verwendet“. Wie andere bereits geschrieben haben, werden Duplikate ignoriert.
Es besteht die Möglichkeit,ÜbereinstimmenBlock, um globale Einstellungen basierend auf einer Bedingung zu überschreiben. DerPermitRootLogingehört zu den Schlüsselwörtern, die in einem Match-Block zulässig sind.
(Ich bin auf diese Frage gestoßen, weil die Standardkonfiguration von sshd in dem von mir verwendeten Betriebssystem geändert wurde, um eineEnthaltenDirektive + Glob-Muster, Verschieben der Herstellerstandards in eine separate Datei. Daher ist es wichtig zu wissen, wie sshd mit den doppelten Schlüsselwörtern umgeht, damit ich die Standardeinstellungen überschreiben kann.)