Hoe specificeer je de private SSH-sleutel om te gebruiken bij het uitvoeren van shell commando's op Git?
Een nogal ongebruikelijke situatie misschien, maar ik wil een privé SSH-sleutel specificeren om te gebruiken bij het uitvoeren van een shell (git) commando vanaf de lokale computer.
In principe als volgt:
git clone git@github.com:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser"
Of nog beter (in Ruby):
with_key("/home/christoffer/ssh_keys/theuser") do
sh("git clone git@github.com:TheUser/TheProject.git")
end
Ik heb voorbeelden gezien van het verbinden met een server op afstand met Net::SSH die een opgegeven privésleutel gebruikt, maar dit is een lokaal commando. Is het mogelijk?
954
3
Zoiets als dit zou moeten werken (voorgesteld door orip):
Als u de voorkeur geeft aan subshells, zou u het volgende kunnen proberen (hoewel het kwetsbaarder is):
Git zal SSH aanroepen die zijn agent zal vinden op omgevingsvariabele; deze zal, op zijn beurt, de sleutel geladen hebben.
Als alternatief kan het instellen van
HOME
ook de truc doen, mits je bereid bent om een directory in te stellen die alleen een.ssh
directory bevat alsHOME
; deze kan ofwel een identity.pub bevatten, of een config bestand dat IdentityFile instelt.Inhoud van my_git_ssh_wrapper:
Dan kunt u de sleutel gebruiken door te doen:
Je zou de GIT_SSH omgevingsvariabele kunnen gebruiken. Maar je zult ssh en opties in een shell script moeten verpakken.
Zie git handleiding:
man git
in je commandoregel.