Ich muss den folgenden Befehl nicht wirklich ausführen, und ich kenne ssh-Schlüssel, wenn ich mich anmelden wollte, ohne ein Passwort einzugeben. Ich würde nur gerne wissen, wie ssh
scheint meine Dateiumleitung zu umgehen.
Führen Sie den folgenden Befehl aus:ssh
fordert mich zur Eingabe eines Passworts auf:
ssh [email protected] > /dev/null 2> /dev/null < /dev/null
Wie funktioniert das? stdin
, stdout
, und stderr
werden alle umgeleitet, außer ssh
schafft es immer noch, eine Eingabeaufforderung auf meinem Bildschirm zu drucken und zu lesen, was ich tippe. Ich habe versucht, ssh
hinzuzufügen Argumente -t -t
und -T
(nicht beides gleichzeitig), um die Pseudo-TTY-Zuweisung zu aktivieren oder zu deaktivieren, aber es machte keinen Unterschied.
Ich habe auch versucht, alle Eingaben und Ausgaben auf diese Weise zu schließen, obwohl ich nicht weiß, ob ich es richtig eingegeben habe. Trotzdem ssh
fordert zur Eingabe eines Passworts auf:
(exec 0<&- 1<&- 2<&- 0>&- 1>&- 2>&-; ssh [email protected])
Akzeptierte Antwort:
Aus OpenSSH readpassphrase.c, Zeile 75:
/*
* Read and write to /dev/tty if available. If not, read from
* stdin and write to stderr unless a tty is required.
*/
Das Programm liest und schreibt die TTY direkt, daher ist es nicht möglich, die direkte Eingabe zu deaktivieren, indem Sie einfach die Standard-Eingabe- und Ausgabepipes schließen. Sie müssen dem SSH-Client mitteilen, dass er ein bereitgestelltes Passwort verwenden soll oder wie von @muru vorgeschlagen.