Kā norādīt privāto SSH atslēgu, ko izmantot, izpildot čaulas komandu Git?

Iespējams, diezgan neparasta situācija, bet es vēlos norādīt privātu SSH atslēgu, ko izmantot, izpildot čaulas (git) komandu no vietējā datora.

Būtībā šādi:

git clone git@github.com:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser"

Vai vēl labāk (Ruby valodā):

with_key("/home/christoffer/ssh_keys/theuser") do
  sh("git clone git@github.com:TheUser/TheProject.git")
end

Esmu redzējis piemērus, kā pieslēgties attālam serverim ar Net::SSH, kas izmanto norādīto privāto atslēgu, bet šī ir lokāla komanda. Vai tas ir iespējams?

Risinājums

Kaut kas tamlīdzīgs būtu jādarbojas (ierosināja orip):

ssh-agent bash -c 'ssh-add /somewhere/yourkey; git clone git@github.com:user/project.git'

ja jums vairāk patīk apakšapvalki, varat izmēģināt šādu variantu (lai gan tas ir trauslāks):

ssh-agent $(ssh-add /somewhere/yourkey; git clone git@github.com:user/project.git)

Git izsauks SSH, kas pēc vides mainīgā atradīs savu aģentu; tam, savukārt, būs ielādēta atslēga.

Alternatīvi, iestatot HOME, arī var izdarīt šo triku, ar nosacījumu, ka esat gatavs izveidot direktoriju, kurā kā HOME ir tikai direktorija .ssh; tajā var būt vai nu identity.pub, vai konfigurācijas fails, kas nosaka IdentityFile.

Komentāri (17)

My_git_ssh_wrapper saturs:

#!/bin/bash

ssh -i /path/to/ssh/secret/key $1 $2

Pēc tam atslēgu var izmantot, veicot:

GIT_SSH=my_git_ssh_wrapper git clone git@github.com:TheUser/TheProject.git
Komentāri (5)

Varat izmantot GIT_SSH vides mainīgo. Bet jums būs nepieciešams ietvert ssh un opcijas čaulas skriptā.

Skatiet git rokasgrāmatu: Uzziniet, kas ir nepieciešams: man git savā komandu čaulā.

Komentāri (0)