ssh sudo não interativo… solicita a senha em texto sem formatação

9

Estou executando alguns comandos ssh não interativos. A autenticação ssh é resolvida através do agente ssh, mas se eu executar um comando que requer sudo, o prompt de senha no meu terminal será em texto sem formatação. Por exemplo:

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

solicitará a senha em texto sem formatação. Alguém sabe como posso fazê-lo usar o prompt seguro normal ou que posso passar a senha por um switch? (então, posso configurar um prompt seguro deste lado antes de enviar o comando)

Qualquer ajuda é muito apreciada.

Iain
fonte

Respostas:

13

Use ssh -t:

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

Então seu comando será

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

Se você não deseja inserir a senha, você pode (se você está autorizado a) modificar sudoersusando o comando visudo.

Adicione parâmetro NOPASSWD:, por exemplo

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

Se você não pode editar o / etc / sudoers, pode usar sudo -S:

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

Com isso, o comando seria

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

Lembre-se de que isso adicionará sua senha ao histórico de comandos do seu shell (com bash, seria o ~/.bash_historyarquivo).

Olli
fonte