Comment la version cloud d'Ubuntu applique-t-elle le «pas de connexion root» sur ssh?

8

Je cherche à modifier la configuration par défaut de la version cloud d'ubuntu où il refuse la connexion root.

Tenter de se connecter à une telle machine donne:

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.

Je voudrais savoir dans quel fichier de configuration le blocage racine via ssh est configuré et comment puis-je changer le message imprimé?

Maxim Veksler
la source

Réponses:

14

Vieille question, mais personne ne vous a vraiment répondu et j'ai eu la même question: d'où vient cette configuration?

Il provient de cloudinit , précisément à l' cc_ssh.pyintérieur/usr/lib/python2.7/dist-packages/cloudinit/config

Cela dépend à son tour directement du fichier /etc/cloud/cloud.cfg. Le vous trouvez une ligne disable_root: true.

Vous devriez pouvoir le remplacer en ajustant vos données utilisateur et en ajoutant une ligne disable_root: false. Votre fournisseur de cloud doit rendre les données utilisateur configurables.

Frank Fischer
la source
9
Ce que fait cloud-init, c'est d'ajouter une ligne /root/.ssh/authorized_keysdans le formulaire 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. Ainsi, même si PermitRootLogin yesla commande ssh ne parvient pas à obtenir un shell fonctionnel.
RubenLaguna
5

En supposant que votre configuration sshd a PermitRootLogin yes.

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

Cependant, le lien fourni par Mike Scott est celui que je vous recommande fortement de lire attentivement et de prendre en compte.

ROOT SSH

Enfin, si vous souhaitez contourner la norme de sécurité Ubuntu et revenir à l'ancienne pratique d'autoriser ssh et rsync en tant que root, cette commande l'ouvrira pour une nouvelle instance des images officielles d'Ubuntu:

ssh -i KEYPAIR.pem ubuntu@HOSTNAME 'sudo cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/' Ce n'est pas recommandé, mais cela peut être un moyen de faire fonctionner le code d'automatisation EC2 existant jusqu'à ce que vous puissiez mettre à niveau vers les pratiques sudo décrites ci-dessus.

Je garde les connexions root SSH désactivées car tout serveur public avec SSH activé sera battu continuellement jour et nuit par les tentatives de connexion root à partir de botnets criminels.

Ailleurs, les documentations mettent en garde

L'activation du compte racine est rarement nécessaire. Presque tout ce que vous devez faire en tant qu'administrateur d'un système Ubuntu peut être fait via sudo ou gksudo. Si vous avez vraiment besoin d'une connexion racine persistante, la meilleure alternative est de simuler un shell de connexion racine en utilisant la commande suivante ...

sudo -i

RedGrittyBrick
la source
1
Merci. cat /root/.ssh/authorized_keys contient un avis pour ouvrir l'écho au lieu du shell bash. Je ne peux pas imaginer pourquoi je ne l'ai pas trouvé moi-même. Je vous remercie.
Maxim Veksler
3

La réponse est ici: http://alestic.com/2009/04/ubuntu-ec2-sudo-ssh-rsync

Copiez le fichier authorized_keys du compte ubuntu vers le compte root. La connexion par mot de passe est désactivée, vous devez donc disposer d'une clé ssh valide pour vous connecter à n'importe quel compte.

Mike Scott
la source
0

Vérifiez / etc / ssh / sshd_config, l'option est appelée "Autoriser la connexion root"

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

L'un des paramètres les plus utiles est "sans -mot de passe" qui nous permet de nous connecter à la racine mais uniquement si vous utilisez l'authentification par clé publique. man sshd_config pour plus d'informations :)

XANi
la source
seule l'authentification par certificat ssh est activée sur toutes les instances linux EC2, c'est la seule méthode d'accès à distance obtenu sur la machine. Évidemment, je peux me connecter au nœud, sinon le message mentionné ne s'imprimerait pas. Veuillez également noter: cat / etc / ssh / sshd_config | grep -i root PermitRootLogin yes
Maxim Veksler