Wie erzwingt die Ubuntu-Cloud-Version das "no root login" über ssh?

8

Ich möchte die Standardeinstellung für die Ubuntu Cloud-Version optimieren, bei der die Root-Anmeldung verweigert wird.

Der Versuch, eine Verbindung zu einer solchen Maschine herzustellen, führt zu folgenden Ergebnissen:

maxim@maxim-desktop:~/workspace/integration/deployengine$ ssh [email protected]
The authenticity of host 'ec2-204-236-252-95.compute-1.amazonaws.com (204.236.252.95)' can't be established.
RSA key fingerprint is 3f:96:f4:b3:b9:4b:4f:21:5f:00:38:2a:bb:41:19:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-204-236-252-95.compute-1.amazonaws.com' (RSA) to the list of known hosts.
Please login as the ubuntu user rather than root user.

Connection to ec2-204-236-252-95.compute-1.amazonaws.com closed.

Ich möchte wissen, in welcher Konfigurationsdatei die Root-Blockierung über ssh konfiguriert ist und wie ich die gedruckte Nachricht ändern kann.

Maxim Veksler
quelle

Antworten:

13

Alte Frage, aber niemand hat dir wirklich geantwortet und ich hatte die gleiche Frage: Woher kommt diese Konfiguration?

Es stammt von cloudinit , genau im cc_ssh.pyInneren/usr/lib/python2.7/dist-packages/cloudinit/config

Dies hängt wiederum direkt von der Datei ab /etc/cloud/cloud.cfg. Dann findest du eine Linie disable_root: true.

Sie sollten es überschreiben können, indem Sie Ihre Benutzerdaten anpassen und eine Zeile hinzufügen disable_root: false. Ihr Cloud-Anbieter sollte die Benutzerdaten konfigurierbar machen.

Frank Fischer
quelle
8
Cloud-init fügt /root/.ssh/authorized_keysdem Formular eine Zeile hinzu no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the user \"ubuntu\" rather than the user \"root\".';echo;sleep 10" ssh-rsa xxxxxx. Selbst wenn PermitRootLogin yesder Befehl ssh keine funktionierende Shell erhält.
Ecerulm
5

Vorausgesetzt, Ihre SSHD-Konfiguration hat PermitRootLogin yes.

sudo grep "login as the ubuntu user" /root/.??*

Ich empfehle Ihnen jedoch dringend, den von Mike Scott bereitgestellten Link gründlich zu lesen und zu beachten.

Wurzel SSH

Wenn Sie den Ubuntu-Sicherheitsstandard umgehen und zur alten Praxis zurückkehren möchten, ssh und rsync als root zuzulassen, wird dieser Befehl für eine neue Instanz der offiziellen Ubuntu-Images geöffnet:

ssh -i KEYPAIR.pem ubuntu@HOSTNAME 'sudo cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/' Dies wird nicht empfohlen, aber es kann eine Möglichkeit sein, vorhandenen EC2-Automatisierungscode so lange funktionsfähig zu machen, bis Sie auf die oben beschriebenen sudo-Praktiken aktualisieren können.

Ich lasse Root-SSH-Anmeldungen deaktiviert, da jeder öffentlich zugängliche Server mit aktiviertem SSH Tag und Nacht durch Root-Anmeldeversuche von kriminellen Botnetzen kontinuierlich beschädigt wird.

An anderer Stelle warnt die Dokumentation

Das Aktivieren des Root-Kontos ist selten erforderlich. Fast alles, was Sie als Administrator eines Ubuntu-Systems tun müssen, kann über sudo oder gksudo erledigt werden. Wenn Sie wirklich eine dauerhafte Root-Anmeldung benötigen, besteht die beste Alternative darin, eine Root-Login-Shell mit dem folgenden Befehl zu simulieren ...

sudo -i

RedGrittyBrick
quelle
1
Vielen Dank. cat /root/.ssh/authorized_keys enthält einen Hinweis zum Öffnen des Echos anstelle der Bash-Shell. Ich kann mir nicht vorstellen, warum ich es selbst nicht finden konnte. Vielen Dank.
Maxim Veksler
3

Die Antwort ist hier: http://alestic.com/2009/04/ubuntu-ec2-sudo-ssh-rsync

Kopieren Sie die Datei authorized_keys vom Ubuntu-Konto in das Root-Konto. Die Kennwortanmeldung ist deaktiviert, daher benötigen Sie einen gültigen SSH-Schlüssel, um sich bei einem beliebigen Konto anzumelden.

Mike Scott
quelle
0

Aktivieren Sie / etc / ssh / sshd_config. Die Option heißt "Root-Login zulassen".

 PermitRootLogin
         Specifies whether root can log in using ssh(1).  The argument
         must be “yes”, “without-password”, “forced-commands-only”, or
         “no”.

Eine weitere nützliche Einstellung ist "ohne Kennwort", mit der Sie sich bei root anmelden können, jedoch nur, wenn Sie die Authentifizierung mit öffentlichem Schlüssel verwenden. Mann sshd_config für weitere Infos :)

XANi
quelle
Die Authentifizierung nur für SSH-Zertifikate ist auf allen EC2-Linux-Instanzen aktiviert. Dies ist die einzige Methode, mit der der Remotezugriff auf den Computer erfolgt. Natürlich kann ich mich am Knoten anmelden, sonst würde die erwähnte Nachricht nicht gedruckt. Bitte beachten Sie auch: cat / etc / ssh / sshd_config | grep -i root PermitRootLogin ja
Maxim Veksler