Wie kann man den privaten SSH-Schlüssel angeben, der beim Ausführen von Shell-Befehlen auf Git verwendet werden soll?
Eine eher ungewöhnliche Situation, aber ich möchte einen privaten SSH-Schlüssel angeben, der beim Ausführen eines Shell-Befehls (git) vom lokalen Computer aus verwendet werden soll.
Im Grunde wie folgt:
git clone git@github.com:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser"
Oder noch besser (in Ruby):
with_key("/home/christoffer/ssh_keys/theuser") do
sh("git clone git@github.com:TheUser/TheProject.git")
end
Ich habe Beispiele für die Verbindung zu einem entfernten Server mit Net::SSH gesehen, der einen bestimmten privaten Schlüssel verwendet, aber dies ist ein lokaler Befehl. Ist das möglich?
954
3
So etwas sollte funktionieren (vorgeschlagen von orip):
Wenn Sie Subshells bevorzugen, können Sie Folgendes versuchen (obwohl es anfälliger ist):
Git ruft SSH auf, das seinen Agenten über eine Umgebungsvariable findet; dieser wiederum hat den Schlüssel geladen.
Alternativ kann man auch
HOME
setzen, vorausgesetzt, man ist bereit, ein Verzeichnis einzurichten, das nur ein.ssh
-Verzeichnis alsHOME
enthält; dieses kann entweder eine identity.pub enthalten oder eine Konfigurationsdatei, die IdentityFile setzt.Inhalt von my_git_ssh_wrapper:
Dann können Sie den Schlüssel verwenden, indem Sie Folgendes tun:
Sie könnten die Umgebungsvariable GIT_SSH verwenden. Allerdings müssen Sie ssh und Optionen in ein Shell-Skript verpacken.
Siehe Git-Handbuch:
man git
in Ihrer Befehlsshell.