sudo ssh no interactivo ... solicita la contraseña en texto sin formato

9

Estoy ejecutando algunos comandos ssh no interactivos. La autenticación ssh se soluciona bien a través del agente ssh, pero si ejecuto un comando que requiere sudo, la solicitud de contraseña en mi terminal es texto sin formato. Por ejemplo:

ssh remotemachine "sudo -u www mkdir -p /path/to/new/folder"

me pedirá la contraseña en texto plano. ¿Alguien sabe cómo puedo hacer que use el indicador de seguridad normal o que puedo pasar la contraseña a través de un interruptor? (como entonces puedo configurar un aviso seguro en este lado antes de enviar el comando)

Cualquier ayuda es muy apreciada.

Iain
fuente

Respuestas:

13

Uso ssh -t:

hombre ssh

-t   Force pseudo-tty allocation. This can be used to execute arbitrary 
     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.

Entonces tu comando será

ssh remotemachine -t "sudo -u www mkdir -p /path/to/new/folder"

Si no desea ingresar la contraseña, puede (si se le permite) modificar sudoersmediante el comando visudo.

Agregar parámetro NOPASSWD:, por ejemplo

username ALL=(ALL) NOPASSWD: /bin/mkdir

Si no puede editar / etc / sudoers, puede usar sudo -S:

hombre sudo

-S      The -S (stdin) option causes sudo to read the password from
        the standard input instead of the terminal device.  The
        password must be followed by a newline character.

Con eso, el comando sería

echo "your_password" | ssh remotemachine -t \
     "sudo -S -u www mkdir -p /path/to/new/folder"

Recuerde que esto agregará su contraseña al historial de comandos de su shell (con bash, eso sería un ~/.bash_historyarchivo).

Olli
fuente