Ich laufe Shell-Skript mit ssh
Befehl in meiner Anwendung. Der verwendete private Schlüssel wird mit der Passphrase verschlüsselt und das Problem ist - ich kann ihn bei der Anfrage nicht interaktiv weitergeben. Der Schlüssel wurde nicht in ssh-agent
hinzugefügt. Ich kann ssh-add my_key
nicht ausführen, weil die Passphrase interaktiv übergeben werden soll. Es ist gut für Terminal-Kommunikation, aber nicht so gut in der Anwendung zu verwenden.Geben Sie SSH-Schlüssel Passphrase über Umgebungsvariable
The man page
sagt:
DISPLAY und SSH_ASKPASS
Wenn ssh-add ein Passwort benötigt, wird er das Passwort vom aktuellen Terminal lesen, wenn es von einem Terminal ausgeführt wurde. Wenn ssh-add kein Terminal zugeordnet ist, aber DISPLAY und SSH_ASKPASS gesetzt sind, wird das Programm ausgeführt, das mit SSH_ASKPASS angegeben wurde, und ein X11-Fenster zum Lesen der Passphrase geöffnet. Dies ist besonders nützlich, wenn ssh-add von einer .xsession oder einem verwandten Skript aufruft. (Beachten Sie, dass bei einigen Maschinen kann es notwendig sein die Eingabe umleiten von/dev/null, diese Arbeit zu machen.)
Als ich SSH_ASKPASS=file_with_passphrase ssh-add my_key
ausführen ich noch ein Passwort eingeben zu können, fragte, sieht aus wie env var gerade ist ignoriert in diesem Fall. Ich habe versucht, ssh -o BatchMode=yes
auszuführen und der Server hat nur den codierten Schlüssel zurückgewiesen, weil niemand in der Lage war, ihn zu entschlüsseln.
Ich kann definitiv ssh Schlüssel manuell vor der Verwendung in ssh-agent
dekodieren, aber es sieht aus wie ich bin, um zu bekommen, was ich brauche von SSH_ASKPASS
Variable, aber ich weiß nicht, wie es funktioniert. Ich freue mich, Hilfe von der Gemeinde zu bekommen.
Sie sagen, 'Wenn ich SSH_ASKPASS execute = file_with_passphrase ssh-add my_key ich noch gefragt Geben Sie eine Passphrase ein "- aber das ist nicht wirklich, was die Manpage sagt - die Datei muss ausführbar sein und das Passwort auf stdout ausgeben - also sollte es etwa so aussehen: echo echo 'your_password'">/tmp/unsafe; chmod + x/tmp/unsicher; SSH_ASKPASS =/tmp/unsafe ssh-hinzufügen my_key'. Als ein Beispiel für etwas, das in 'SSH_ASKPASS' verwendet werden kann, siehe' x11-ssh-askpass' Befehl - Sie können seine Manpage auschecken und sie auch ausführen, um zu sehen, wie sie sich verhält. –
@IwanAucamp Oh danke, missverstanden, machte ein Skript statt Datei. Und es hat nicht geholfen btw –