![Como confirmar a senha root do Linux a partir do ssh root?](https://rvso.com/image/154443/Como%20confirmar%20a%20senha%20root%20do%20Linux%20a%20partir%20do%20ssh%20root%3F.png)
Como posso verificar a senha root de uma máquina remota?
Eu tenho máquinas remotas que normalmente são acessadas via ssh root e outros usuários. Por motivos de segurança, tenho um script para alterar periodicamente todas as chaves e senhas de usuários de um servidor central.
Para usuários não root, a senha é atualizada assim.
ssh -i a_priv_key root@ip "echo 'user:NEWPASS' | chpasswd"
E verifico que realmente mudou com isso.
ssh -i b_priv_key user@ip "echo NEWPASS | sudo -S ls /root"
No entanto, se eu quiser fazer o mesmo com o usuário root, estou preso. O sudo -S ls /root sempre retorna uma listagem com qualquer senha porque acabamos de fazer o ssh na máquina remota como root.
E se fizermos ssh como usuário, o sudo solicitará a senha do usuário.
Tenho tentado obter algo com su user && su root porque percebi que ele solicitará uma senha de root, mas não consigo criar um script como acima.
'login root' do shell root também sempre solicitará uma senha, mas também não consigo criar um script de senha em texto simples para isso.
Eu li esta pergunta, mas esperava um método embutido para fazer isso, em vez de escrever um aplicativo personalizado que deve ser instalado nas máquinas remotas. Como verificar a senha com Linux?
Responder1
Se configurar sudo
na máquina de destino for uma opção, então você pode configurar rootpw
algum comando específico, o que sudo
solicita a senha do root em vez da senha do usuário. Por exemplo, você pode adicionar a seguinte linha em um arquivo
/etc/sudoers.d/lsrootpw
(e reiniciar sudo
o serviço, se necessário)
Defaults!/bin/ls rootpw
Com isso, qualquer usuário, exceto root, ao fazer isso, sudo ls
será solicitada a senha do root em vez de sua própria senha. Assim, você poderia testar com
ssh -i b_priv_key root@ip su user sudo -S ls /root <<< "NEWPASS"
o que aconteceria de uma forma ou de outra, dependendo se a senha NEWPASS
está correta root
ou não. Esse teste exigirá um usuário sudo no destino.
Ou, se você tiver o comando do Debian runuser
, você pode usar nobody
o seguinte:
ssh -i b_priv_key root@ip runuser -u nobody -- sudo -S ls /root <<< "NEWPASS"
Isso também deve produzir consistentemente dois resultados diferentes, dependendo da exatidão da senha. Em particular, uma senha correta resulta em uma reclamação por nobody
não estar no sudoers
arquivo. Embora você possa lidar com isso com uma declaração adicional no arquivo /etc/sudoers.d/lsrootpw
.
É claro que, apesar de tudo, isso não é muito diferente de ter um aplicativo personalizado, pois requer a instalação de algo no(s) host(s) de destino. Ao mesmo tempo, tudo é possível com uma sequência de cinco comandos remotos (add lsrootpw
, restart sudo
, make the test, remove lsrootpw
e reinicie o sudo novamente)