it-swarm.com.de

So richten Sie einen kennwortlosen SSH-Zugriff für den Root-Benutzer ein

Ich muss einen Computer konfigurieren, damit die Softwareinstallation über SSH aus der Ferne automatisiert werden kann. Nach dem Wiki konnte ich SSH-Schlüssel einrichten, damit mein Benutzer ohne Kennwort auf den Computer zugreifen kann. Ich muss jedoch weiterhin mein Kennwort manuell eingeben, wenn ich Sudo verwende automatisierter Prozess sollte nicht zu tun haben.

Obwohl mein /etc/ssh/sshd_configPermitRootLogin yes hat, kann ich mich anscheinend nicht als root anmelden, vermutlich weil es sich nicht um ein "echtes" Konto mit einem separaten Passwort handelt.

Wie konfiguriere ich SSH-Schlüssel, damit sich ein Prozess unter Ubuntu remote als root anmelden kann?

44
Cerin

Teil 1: SSH-Schlüssel ohne Passwort

Um eine kennwortlose SSH-Verbindung für den Root-Benutzer einzurichten, müssen Sie über Root-Zugriff auf dem Server verfügen. Am einfachsten ist es, vorübergehend zuzulassen, dass sich root über ssh per Passwort anmeldet. Auf die eine oder andere Weise benötigen Sie Root-Zugriff auf dem Server, um dies zu tun. Wenn Sie keinen Root-Zugriff auf dem Server haben, wenden Sie sich an den Serveradministrator.

Auf dem Client (von wo aus Sie ssh)

Erstelle zuerst einen SSH-Schlüssel ohne Passwort. Ich schlage vor, Sie geben ihm einen Namen, anstatt den Standardnamen zu verwenden

ssh-keygen -f foo

Die Option -f gibt einen Dateinamen an, foo ist ein Beispiel. Verwenden Sie einen beliebigen Namen.

Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, drücken Sie einfach die Eingabetaste, und Sie generieren einen Schlüssel ohne Kennwort.

Als nächstes müssen Sie den Schlüssel auf den Server übertragen. Die einfachste Methode ist die Verwendung von ssh-copy-id. Dazu müssen Sie root vorübergehend erlauben, sich auf dem Server anzumelden.

Auf dem Server (wo Sie ssh TO)

edit /etc/ssh/sshd_config

Sudo nano /etc/ssh/sshd_config

Stellen Sie sicher, dass Sie root erlauben, sich mit der folgenden Syntax anzumelden

PasswordAuthentication yes
PermitRootLogin yes

Starten Sie den Server neu

Sudo service ssh restart

Legen Sie ein root-Passwort fest und verwenden Sie ein sicheres

Sudo passwd

Auf dem Client:

Übertragen Sie vom Client den Schlüssel auf den Server

ssh-copy-id -i ~/.ssh/foo [email protected]

ändere "foo" den Namen deines Schlüssels und gib dein Server root Passwort ein, wenn du gefragt wirst.

Testen Sie den Schlüssel

ssh -i ~/.ssh/foo [email protected]

Angenommen, es funktioniert, heben Sie die Einstellung eines Root-Passworts auf und deaktivieren Sie die Passwortanmeldung.

Auf dem Server:

Sudo passwd -l root

/etc/ssh/sshd_config bearbeiten

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 nun in der Lage sein, sich mit Ihrem Schlüssel ohne Kennwort einzuspielen, und Sie sollten nicht in der Lage sein, sich als Benutzer ohne Schlüssel einzuspielen.

ssh -i ~/.ssh/foo [email protected]

Teil 2: Befehle über Sudo ausführen, ohne ein Passwort einzugeben

Sie konfigurieren Sudo so, dass Sie Befehle ohne Kennwort ausführen können.

Dies wird hier an zwei Stellen beantwortet:

Von den beiden empfehle ich, möglichst wenige Befehle zuzulassen (erste Antwort) und nicht alle Befehle (zweite Antwort).

56
Ashimema

Sie verwechseln zwei verschiedene Dinge:

das kennwortlose Protokoll wird verwendet, um sicherzustellen, dass sich Benutzer nicht remote bei Ihrem System anmelden können, indem Sie Ihr Kennwort erraten. Wenn Sie den Benutzernamen @ machine ssh und eine Verbindung ohne Kennwort herstellen können, ist dies korrekt eingerichtet und hat nichts anderes damit zu tun.

Sudo wird verwendet, um einem normalen Benutzerkonto zu erlauben, etwas mit Superuser-Berechtigungen zu tun. Dies erfordert , dass der Benutzer sein Kennwort eingibt. Dies geschieht unabhängig davon, ob Sie eine Remoteverbindung (über kennwortloses oder kennwortgeschütztes SSH) haben oder lokal auf dem Computer sind. Sie versuchen, Sudo so einzustellen, dass Sie nicht nach Ihrem Passwort gefragt werden. Dies wird jedoch nicht empfohlen. Wie Sie das tun, erfahren Sie über eine Antwort wie 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, sondern beschreibt, was Sie stattdessen tun sollten . Wenn Sie wirklich Remoteverbindungen direkt zum Root-Konto zulassen möchten, müssen Sie das Root-Konto aktivieren (siehe meinen Kommentar unten). Lassen Sie mich noch einmal sagen NICHT Remoteanmeldungen für Ihr Root-Konto zulassen.

8
David Oneill

Q. Melden Sie sich beim Remote-Host als Root-Benutzer mit passwortfreiem SSH an (z. B. ssh root @ remotehost_ip) .

A. Befolgen Sie die nachstehenden Schritte, um sich als Root-Benutzer mit passwortfreiem SSH beim Remote-Host anzumelden.

1. Schritt:
Zuerst müssen Sie den öffentlichen Schlüssel des lokalen Benutzers für die authorized_keys-Datei des Remote-Host-Root-Benutzers freigeben. Es gibt viele Möglichkeiten, hier ein Beispiel.

https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2

Sie können den Inhalt Ihres öffentlichen Schlüssels auch einfach kopieren und in die authorized_keys-Datei des Remote-Host-Root-Benutzers einfügen.

2. Schritt:
Konfigurieren Sie ssh so, dass die Anmeldung ohne Passwort auf dem Remote-Host zulässig ist. Melden Sie sich beim Remote-Host an und bearbeiten Sie die Datei/etc/ssh/sshd_config. Starten Sie dann den ssh-Dienst neu. Vergessen Sie nicht, "PermitRootLogin yes" auszukommentieren.

#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no

#service ssh restart

#PermitRootLogin auskommentieren yes

3. Schritt:
Testen Sie die Verbindung von Ihrem lokalen Computer mit einem Benutzer, dessen öffentlicher Schlüssel zuvor freigegeben wurde.

$ssh [email protected]_ip
4
Aanokpe Rai

PermitRootLogin steuert, ob der Benutzer mit dem Namen "root" (genauer: jeder Benutzer mit der UID 0) sich anmelden darf. Wenn Sie sich als root anmelden, benötigen Sie Sudo nicht, um privilegierte Aufgaben auszuführen.

Wenn Sie sich hingegen in einem Benutzerkonto anmelden und Sudo ohne Kennwort verwenden möchten, müssen Sie die sudoers-Datei konfigurieren, ohne mit /etc/ssh/sshd_config herumspielen zu müssen. Siehe Wie Ubuntu das Passwort nach dem ersten Mal für immer merken kann

2
Lekensteyn