Entsperren des privaten SSH-Schlüssels (mit Cygwin / X11), wenn keine lokale Shell beteiligt ist?

331
DevSolar

Ich habe Cygwin / X11 inklusive installiert openssh. Ich habe ein öffentliches / privates Schlüsselpaar eingerichtet. Ich habe den öffentlichen Schlüssel in ~/.ssh/authorized_keysRemoteHost installiert.

Ich habe Cygwin / X11 (via ~/.XWinrc) so konfiguriert, dass ein Menüeintrag bereitgestellt wird, der eine RemoteHost-Shell in einem lokalen Terminal öffnet:

menu root { RemoteShell exec "/bin/xterm.exe -e /usr/bin/ssh -Yl <user> RemoteHost" }  RootMenu root 

Ich möchte nach der Passphrase meines privaten Schlüssels gefragt werden, wenn dieser Menüpunkt das erste Mal ausgewählt wird. Ich nicht will bei zukünftigen Anrufen abgefragt werden.

Da es keine lokale Shell gibt, dh ich kann nichts tun (wie das Einrichten ssh_agentoder keychain) ~/.bash_profile, bin ich hier etwas ratlos. Es gibt auch keine Hülle, in der geben, die keyphrase.

Wie kann ich meinen privaten SSH-Schlüssel entsperren, wenn keine lokale Shell beteiligt ist?

1

1 Antwort auf die Frage

1
Jakuje
  • Sie können ssh-agentin einer nachfolgenden Shell starten und die Umgebungsvariable (z. B. aus einer in der ersten erstellten Datei) in die neue exportieren.

    ssh-agent > ~/.ssh_agent_env source ~/.ssh_agent_env 
  • Sie können nach einer Passphrase gefragt werden, indem Sie eine GUI-Eingabeaufforderung verwenden, die sshvon der Umgebungsvariablen bereitgestellt wird SSH_ASKPASS. In Linux normalerweise gnome-askpassoder ähnlich. Ähnliches gilt auch für cygwin.

  • Es gibt eine AddKeysToAgentOption, die die neu verwendeten Schlüssel zum Ausführen hinzufügt ssh-agent, um das zu erreichen, was Sie benötigen.

Beide benötigen vor dem Aufruf des Finales einige Codierungen / Überprüfungen ssh, zum Beispiel ein Bash-Skript, das Sie in aufrufen können RemoteShell exex /path/to/my/script.sh, zum Beispiel:

#!/bin/bash ps aux | grep ssh-agent | grep -v grep if [ "$?" = "1" ]; then # start a new agent (in a background) and store its environent ssh-agent > ~/.ssh_agent_env end # load existing ssh-agent connection source ~/.ssh_agent_env  /bin/xterm.exe -e /usr/bin/ssh -oAddKeysToAgent=yes -Yl <user> RemoteHost # or do whatever magic you want 
Können Sie glauben, dass mir der Gedanke an ein lokales Wrapper-Skript nicht in den Sinn gekommen ist? 8- \ DevSolar vor 7 Jahren 0