
Ich muss eine Maschine so konfigurieren, dass die Softwareinstallation remote über SSH automatisiert werden kann.das Wikikonnte ich SSH-Schlüssel einrichten, sodass mein Benutzer ohne Kennwort auf die Maschine zugreifen kann, aber ich muss mein Kennwort immer noch manuell eingeben, wenn ich verwende sudo
, was bei einem automatisierten Prozess offensichtlich nicht nötig sein sollte.
Obwohl mein /etc/ssh/sshd_config
über verfügt PermitRootLogin yes
, kann ich mich scheinbar nicht als Root anmelden, vermutlich weil es sich nicht um ein „echtes“ Konto mit einem separaten Passwort handelt.
Wie konfiguriere ich SSH-Schlüssel, sodass sich ein Prozess bei Ubuntu remote als Root anmelden kann?
Antwort1
Teil 1: SSH-Schlüssel ohne Passwort
Um eine passwortlose SSH-Verbindung für den Root-Benutzer einzurichten, benötigen Sie Root-Zugriff auf den Server. Die einfachste Methode istvorübergehendErlauben Sie Root, sich über SSH mit einem Passwort anzumelden. Sie benötigen dazu auf jeden Fall Root-Zugriff auf den Server. Wenn Sie keinen Root-Zugriff auf den Server haben, wenden Sie sich an den Serveradministrator.
Auf dem Client (von dem aus Sie SSH verwenden)
Erstellen Sie zunächst einen SSH-Schlüssel ohne Passwort. Ich empfehle Ihnen dringend, ihm einen Namen zu geben, anstatt den Standardnamen zu verwenden.
ssh-keygen -f foo
Die Option -f gibt einen Dateinamen an, „foo“ ist ein Beispiel; verwenden Sie den Namen Ihrer Wahl.
Wenn Sie zur Eingabe eines Passworts aufgefordert werden, drücken Sie einfach die Eingabetaste und Sie generieren einen Schlüssel ohne Passwort.
Als nächstes müssen Sie den Schlüssel auf den Server übertragen. Am einfachsten geht das mit ssh-copy-id
. Dazu müssen Sie root vorübergehend erlauben, sich per SSH auf dem Server anzumelden.
Auf dem Server (auf dem Sie per SSH zugreifen)
bearbeiten/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Stellen Sie sicher, dass Sie root die Anmeldung mit der folgenden Syntax gestatten
PasswordAuthentication yes
PermitRootLogin yes
Starten Sie den Server neu
sudo service ssh restart
Legen Sie ein sicheres Root-Passwort fest
sudo passwd
Auf dem Client:
Übertragen Sie den Schlüssel vom Client auf den Server
ssh-copy-id -i ~/.ssh/foo root@server
ändern Sie „foo“ in den Namen Ihres Schlüssels und geben Sie Ihr Server-Root-Passwort ein, wenn Sie dazu aufgefordert werden.
Testen Sie den Schlüssel
ssh -i ~/.ssh/foo root@server
Vorausgesetzt, es funktioniert, heben Sie die Festlegung des Root-Passworts auf und deaktivieren Sie die Kennwortanmeldung.
Auf dem Server:
sudo passwd -l root
Bearbeiten/etc/ssh/sshd_config
sudo nano `/etc/ssh/sshd_config`
Ändern Sie Folgendes:
PasswordAuthentication no
PermitRootLogin without-password
Starten Sie den Server neu
sudo service ssh restart
Auf dem Client (Test):
Sie sollten sich jetzt mit Ihrem Schlüssel ohne Kennwort per SSH anmelden können und sich als beliebiger Benutzer ohne Schlüssel nicht per SSH anmelden können.
ssh -i ~/.ssh/foo root@server
Teil 2: Ausführen von Befehlen über sudo ohne Eingabe eines Passworts
Sie konfigurieren sudo, um Ihnen die Ausführung von Befehlen ohne Kennwort zu ermöglichen.
Dies wird hier an zwei Stellen beantwortet:
- Wie führe ich bestimmte Sudo-Befehle ohne Kennwort aus?
- Wie führe ich den Sudo-Befehl ohne Passwort aus?
Von beidem schlage ich vor, möglichst wenige Befehle zuzulassen (erste Antwort) und nicht alle Befehle (zweite Antwort).
Antwort2
Sie verwechseln zwei verschiedene Dinge:
Das passwortlose Protokoll wird verwendet, um sicherzustellen, dass sich niemand aus der Ferne in Ihr System einloggen kann, indem er Ihr Passwort errät. Wenn Sie sich per SSH über Benutzername@Rechner ohne Passwort verbinden können, ist dies richtig eingerichtet und hat nichts anderes damit zu tun.
sudo
wird verwendet, um einem normalen Benutzerkonto zu erlauben, etwas mit Superuser-Berechtigungen zu tun. Diestutverlangen, dass der Benutzer sein Passwort eingibt. Dies geschieht unabhängig davon, ob Sie remote verbunden sind (über passwortloses oder passwortgeschütztes SSH) oder ob Sie sich lokal auf dem Computer befinden. Sie versuchen, dies so einzustellen, dass Sie sudo
nicht nach Ihrem Passwort gefragt werden, was nicht empfohlen wird, aber Sie können lernen, wie das geht, indem Sie eine Antwort wie diese verwenden.https://askubuntu.com/a/74083/6161
Hinweis für zukünftige Leser dieser Antwort:
Meine obige Antwort beantwortet nicht die eigentliche Frage des ursprünglichen Posters, sie beschreibt, was Siesollentun Sie stattdessen. Wenn SieWirklichWenn Sie Remoteverbindungen direkt zum Root-Konto zulassen möchten, müssen Sie das Root-Konto aktivieren (siehe meinen Kommentar unten). Lassen Sie mich noch einmal sagenNICHTErlauben Sie Remote-Anmeldungen bei Ihrem Root-Konto.
Antwort3
F. Melden Sie sich als Root-Benutzer mit passwortlosem SSH beim Remote-Host an (z. B. ssh root@remotehost_ip).
A. Um sich mit passwortlosem SSH als Root-Benutzer beim Remote-Host anzumelden, befolgen Sie die folgenden Schritte.
1. Schritt:
Zuerst müssen Sie den öffentlichen Schlüssel des lokalen Benutzers mit der Datei authorized_keys des Root-Benutzers des Remote-Hosts teilen. Es gibt mehrere Möglichkeiten, dies zu tun, hier ist ein Beispiel.
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2
Oder Sie können den Inhalt Ihres öffentlichen Schlüssels einfach in die Datei „authorized_keys“ des Root-Benutzers des Remote-Hosts kopieren und einfügen.
2. Schritt:
Konfigurieren Sie SSH, um eine passwortlose Anmeldung beim Remote-Host zu ermöglichen. Melden Sie sich beim Remote-Host an, bearbeiten Sie die Datei /etc/ssh/sshd_config und starten Sie den SSH-Dienst neu. Vergessen Sie nicht, „PermitRootLogin yes“ auszukommentieren.
#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no
#service ssh restart
Kommentieren Sie #PermitRootLogin aus.
3. Schritt:
Testen Sie Ihre Verbindung von Ihrem lokalen Computer mit dem Benutzer, dessen öffentlicher Schlüssel zuvor freigegeben wurde.
$ssh root@remotehost_ip
Antwort4
PermitRootLogin steuert, ob sich der Benutzer mit dem Namen „root“ (genauer gesagt: jeder Benutzer mit UID 0) anmelden darf. Wenn Sie sich als Root anmelden, müssen Sie keine sudo
privilegierten Aufgaben ausführen.
Wenn Sie sich hingegen mit einem Benutzerkonto anmelden und sudo
ohne Passwort verwenden möchten, müssen Sie die sudoers-Datei konfigurieren, ohne sich damit beschäftigen zu müssen /etc/ssh/sshd_config
. SieheSo lässt sich Ubuntu das Passwort nach der ersten Verwendung für immer merken