¿Cuál es la forma correcta de sudo sobre SSH?
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 el terminal. De lo contrario funciona bien.
ssh user@server "sudo script"
¿Cuál es la forma correcta de hacer esto para poder escribir la contraseña a sudo
través de SSH sin que aparezca la contraseña mientras escribo?
Otra forma es utilizar -t
open para ssh
:
ssh -t user@server "sudo script"
Ver man ssh
:
-t Force pseudo-tty allocation. This can be used to execute arbi-
trary screen-based programs on a remote machine, which can be
very useful, e.g., when implementing menu services. Multiple -t
options force tty allocation, even if ssh has no local tty.
Pude automatizarlo completamente con el siguiente comando:
echo pass | ssh -tt user@server "sudo script"
Ventajas:
- sin solicitud de contraseña
- no mostrará la contraseña en el historial de bash de la máquina remota
Con respecto a la seguridad: como dijo Kurt , ejecutar este comando mostrará su contraseña en su historial de bash local, y es mejor guardar la contraseña en un archivo diferente o guardar todos los comandos en un archivo .sh y ejecutarlo. NOTA: El archivo debe tener los permisos correctos para que solo los usuarios autorizados puedan acceder a él.