2012-04-25 16 views
78

Tengo un script que ejecuta otro script a través de SSH en un servidor remoto usando sudo. Sin embargo, cuando escribo la contraseña, aparece en la terminal. (De lo contrario, funciona bien)manera correcta de sudo sobre ssh

ssh [email protected] "sudo script" 

¿Cuál es la forma correcta de hacer esto para que pueda escribir la contraseña para sudo a través de SSH sin la contraseña que aparece mientras se escribe?

+1

en cuanto a mí, la razón para buscar una forma de sudoing a través de ssh era que no funcionaba cuando intentaba algo como 'ssh <[email protected]> sudo

-3

Dependiendo de su uso, no tenía éxito con lo siguiente:

ssh [email protected] "script" 

Esto solicitará la contraseña de root y luego ejecutará el comando correctamente.

+18

¿Yikes, SSH como raíz? Esa es una mala idea por todo tipo de razones. – darkfeline

+11

Recuerde que ssh no es telnet. No es más peligroso para ssh como root que para ssh como otro usuario y ejecutar sudo. Su contraseña está encriptada de la misma manera sobre la conexión ssh. –

+17

Stéphane es absolutamente correcto en lo que respecta a la seguridad de las contraseñas. Sin embargo, al usar root en lugar de sudo, pierde el seguimiento de auditoría que acompaña a sudo. Además, el acceso raíz puede no estar disponible. – djeikyb

0

La mejor manera es ssh -t [email protected] "sudo <scriptname>", por ejemplo ssh -t [email protected] "sudo reboot". Se le pedirá la contraseña de usuario en primer lugar y luego la raíz (ya que estamos ejecutando la secuencia de comandos o comandos con privilegios de root.

espero que ayudó y se aclaró sus dudas.

0

Suponiendo que desea ninguna solicitud de contraseña :

ssh $HOST 'echo $PASSWORD | sudo -S $COMMMAND' 

Ejemplo

ssh [email protected] 'echo secret | sudo -S echo hi' # outputs 'hi'