![¿Cómo confirmar la contraseña de root de Linux desde ssh root?](https://rvso.com/image/154443/%C2%BFC%C3%B3mo%20confirmar%20la%20contrase%C3%B1a%20de%20root%20de%20Linux%20desde%20ssh%20root%3F.png)
¿Cómo puedo verificar la contraseña de root de una máquina remota?
Tengo máquinas remotas a las que normalmente se accede a través de ssh root y otros usuarios. Por motivos de seguridad, tengo un script para cambiar todas las claves y contraseñas de usuario periódicamente desde un servidor central.
Para usuarios que no son root, la contraseña se actualiza así.
ssh -i a_priv_key root@ip "echo 'user:NEWPASS' | chpasswd"
Y compruebo que realmente ha cambiado con esto.
ssh -i b_priv_key user@ip "echo NEWPASS | sudo -S ls /root"
Sin embargo, si quiero hacer lo mismo con el usuario root, me quedo atascado. El sudo -S ls /root siempre devuelve un listado con cualquier contraseña porque simplemente ingresamos a la máquina remota como root.
Y si ingresamos como usuario, sudo solicita la contraseña del usuario.
He estado intentando obtener algo con su user && su root porque noté que me solicitará una contraseña de root, pero no puedo escribirla como se muestra arriba.
'iniciar sesión como root' desde el shell raíz también siempre solicitará una contraseña, pero tampoco puedo escribir la contraseña en texto claro.
Leí esta pregunta pero esperaba un método incorporado para hacerlo en lugar de escribir una aplicación personalizada que deba instalarse en las máquinas remotas. ¿Cómo verificar la contraseña con Linux?
Respuesta1
Si configurar sudo
en la máquina de destino es una opción, entonces puede configurar rootpw
algún comando determinado, lo que hace que sudo
solicite la contraseña de root en lugar de la contraseña de usuario. Por ejemplo, podría agregar la siguiente línea en un archivo
/etc/sudoers.d/lsrootpw
(y reiniciar sudo
el servicio si es necesario)
Defaults!/bin/ls rootpw
De esta manera, a cualquier usuario excepto root, al hacerlo sudo ls
se le pedirá la contraseña de root en lugar de su propia contraseña. Por lo tanto, podrías probar con
ssh -i b_priv_key root@ip su user sudo -S ls /root <<< "NEWPASS"
lo cual iría de una forma u otra dependiendo de si la contraseña NEWPASS
es correcta root
o no. Esa prueba requerirá un usuario sudo en el objetivo.
O, si tiene runuser
el comando de Debian, podría utilizarlo nobody
como se muestra a continuación:
ssh -i b_priv_key root@ip runuser -u nobody -- sudo -S ls /root <<< "NEWPASS"
Eso también debería producir constantemente dos resultados diferentes dependiendo de la exactitud de la contraseña. En particular, una contraseña correcta da lugar a una reclamación por nobody
no estar en el sudoers
fichero. Aunque podría solucionarlo mediante una declaración adicional en /etc/sudoers.d/lsrootpw
.
Por supuesto, en general, esto no es muy diferente de tener una aplicación personalizada, ya que requiere la instalación de algo en los hosts de destino. Al mismo tiempo, todo es factible con una secuencia de cinco comandos remotos (agregar lsrootpw
, reiniciar sudo
, realizar la prueba, eliminar lsrootpw
y reiniciar sudo nuevamente).