nicht interaktives ssh sudo… fordert im Klartext zur Eingabe des Passworts auf

9

Ich führe einige nicht interaktive ssh-Befehle aus. Die SSH-Authentifizierung wird über den SSH-Agenten in Ordnung gebracht. Wenn ich jedoch einen Befehl ausführe, für den Sudo erforderlich ist, ist die Kennwortabfrage in meinem Terminal Klartext. Beispielsweise:

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

Ich werde im Klartext zur Eingabe des Passworts aufgefordert. Weiß jemand, wie ich es dazu bringen kann, die normale sichere Eingabeaufforderung zu verwenden, oder dass ich das Passwort über einen Schalter weitergeben kann? (da ich dann auf dieser Seite eine sichere Eingabeaufforderung einrichten kann, bevor ich den Befehl sende)

Jede Hilfe wird sehr geschätzt.

Iain
quelle

Antworten:

13

Verwendung ssh -t:

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

So wird Ihr Befehl sein

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

Wenn Sie kein Passwort eingeben möchten, können Sie (falls zulässig) den sudoersBefehl ändern visudo.

Fügen Sie NOPASSWD:zum Beispiel Parameter hinzu

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

Wenn Sie / etc / sudoers nicht bearbeiten können, können Sie Folgendes verwenden sudo -S:

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

Damit wäre der Befehl

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

Denken Sie daran, dass dadurch Ihr Kennwort zum Befehlsverlauf Ihrer Shell hinzugefügt wird (mit bash wäre das eine ~/.bash_historyDatei).

Olli
quelle