ssh sudo non interattivo ... richiede la password in testo semplice


9

Sto eseguendo alcuni comandi ssh non interattivi. L'autenticazione ssh viene gestita correttamente tramite l'agente ssh, ma se eseguo un comando che richiede sudo, la richiesta di password nel mio terminale è di testo semplice. Per esempio:

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

mi chiederà la password in testo semplice. Qualcuno sa come posso ottenere per utilizzare il normale prompt di sicurezza o che posso passare la password tramite un interruttore? (come allora posso impostare un prompt sicuro su questo lato prima di inviare il comando)

Ogni aiuto è molto apprezzato.

Risposte:


13

Utilizzare ssh -t:

man 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.

Quindi il tuo comando sarà

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

Se non si desidera inserire la password, è possibile (se è consentito) modificare sudoersutilizzando il comando visudo.

Aggiungi parametro NOPASSWD:, ad esempio

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

Se non riesci a modificare / etc / sudoers, puoi usare sudo -S:

uomo 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 ciò, il comando sarebbe

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

Ricorda che questo aggiungerà la tua password per comandare la cronologia della tua shell (con bash, sarebbe ~/.bash_historyfile).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.