¿Cómo la versión de nube de Ubuntu impone el "inicio de sesión no root" a través de ssh?

8

Estoy buscando ajustar la configuración predeterminada de la versión de nube de ubuntu donde se niega el inicio de sesión de root.

Intentando conectarse a tales rendimientos de la máquina:

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.

Me gustaría saber en qué archivo de configuración está configurado el bloqueo de raíz a través de ssh y cómo puedo cambiar el mensaje impreso.

Maxim Veksler
fuente

Respuestas:

14

Antigua pregunta, pero nadie realmente te respondió y yo he tenido la misma pregunta: ¿De dónde viene esta configuración?

Se origina en cloudinit , precisamente cc_ssh.pydentro de/usr/lib/python2.7/dist-packages/cloudinit/config

Esto a su vez depende directamente del archivo /etc/cloud/cloud.cfg. El encuentras una línea disable_root: true.

Debería poder anularlo ajustando sus datos de usuario y agregar línea disable_root: false. Su proveedor de la nube debe hacer que los datos de usuario sean configurables.

Frank Fischer
fuente
99
Lo que hace cloud-init es agregar una línea /root/.ssh/authorized_keysen el formulario 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. Entonces, incluso si PermitRootLogin yesel comando ssh no podrá obtener un shell de trabajo.
RubenLaguna
5

Asumiendo que su configuración sshd tiene PermitRootLogin yes.

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

Sin embargo, el enlace que Mike Scott proporcionó es uno que le recomiendo que lea detenidamente y tenga en cuenta.

RAÍZ SSH

Finalmente, si desea eludir el estándar de seguridad de Ubuntu y volver a la antigua práctica de permitir ssh y rsync como root, este comando lo abrirá para una nueva instancia de las imágenes oficiales de Ubuntu:

ssh -i KEYPAIR.pem ubuntu@HOSTNAME 'sudo cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/' Esto no se recomienda, pero puede ser una forma de conseguir que el código de automatización EC2 existente continúe funcionando hasta que pueda actualizar a las prácticas de sudo descritas anteriormente.

Mantengo los inicios de sesión raíz SSH deshabilitados porque cualquier servidor público con SSH habilitado será maltratado continuamente día y noche por intentos de inicio de sesión raíz desde botnets criminales.

En otros lugares la documentación advierte

Habilitar la cuenta de Root rara vez es necesario. Casi todo lo que necesita hacer como administrador de un sistema Ubuntu se puede hacer a través de sudo o gksudo. Si realmente necesita un inicio de sesión Root persistente, la mejor alternativa es simular un shell de inicio de sesión Root usando el siguiente comando ...

sudo -i

RedGrittyBrick
fuente
1
Gracias. cat /root/.ssh/authorized_keys contiene un aviso para abrir echo en lugar de bash shell. No puedo imaginar por qué no pude encontrarlo yo mismo. Gracias.
Maxim Veksler
3

La respuesta está aquí: http://alestic.com/2009/04/ubuntu-ec2-sudo-ssh-rsync

Copie el archivo authorised_keys de la cuenta de ubuntu a la cuenta raíz. El inicio de sesión con contraseña está deshabilitado, por lo que debe tener una clave ssh válida para iniciar sesión en cualquier cuenta.

Mike Scott
fuente
0

Marque / etc / ssh / sshd_config, la opción se llama "Permitir inicio de sesión raíz"

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

Una de las configuraciones más útiles es "sin contraseña", que permite iniciar sesión en la raíz, pero solo si utiliza la autenticación de clave pública. man sshd_config para más información :)

XANi
fuente
La autenticación solo con certificado ssh está habilitada en todas las instancias de Linux EC2, este es el único método que se obtiene acceso remoto a la máquina. Obviamente, puedo iniciar sesión en el nodo; de lo contrario, el mensaje mencionado no se imprimiría. Tenga en cuenta también: cat / etc / ssh / sshd_config | grep -i root PermitRootLogin sí
Maxim Veksler