non-ssh sudo interattivo … richiede la password nel text normale

Sto eseguendo alcuni comandi non ssh interattivi. L'authentication di ssh viene curata bene attraverso l'agente ssh, ma se eseguo un command che richiede sudo, allora la richiesta di password nel mio terminal è text normale. Per esempio:

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

mi chiederà la password in text normale. Qualcuno sa come posso ottenerlo per usare il normale prompt sicuro o che posso passare la password tramite un interruttore? (come allora posso impostare un prompt sicuro su questo lato prima di submit il command)

Ogni aiuto è molto apprezzato.

Utilizza ssh -t :

uomo 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, eg when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty. 

Quindi il tuo command sarà

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

Se non si desidera immettere la password, è ansible (se è consentito) modificare i sudoers usando il command visudo .

Aggiungere il parametro NOPASSWD: ad esempio

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

Se non è ansible modificare / etc / sudoers, è ansible utilizzare 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 questo, il command 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 la cronologia del command della shell (con bash, che sarebbe il file ~/.bash_history ).