Git'te kabuk komutu çalıştırırken kullanılacak özel SSH anahtarı nasıl belirtilir?

Belki alışılmadık bir durum ama yerel bilgisayardan bir kabuk (git) komutu çalıştırırken kullanmak için özel bir SSH anahtarı belirtmek istiyorum.

Temel olarak böyle:

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

Ya da daha iyisi (Ruby'de):

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

Net::SSH ile belirli bir özel anahtar kullanan uzak bir sunucuya bağlanma örnekleri gördüm, ancak bu yerel bir komut. Bu mümkün müdür?

Çözüm

Bunun gibi bir şey işe yarayacaktır (orip tarafından önerilmiştir):

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

alt kabukları tercih ediyorsanız, aşağıdakileri deneyebilirsiniz (daha kırılgan olsa da):

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

Git, aracısını ortam değişkenine göre bulacak olan SSH'yi çağıracaktır; bu da anahtarı yükleyecektir.

Alternatif olarak, HOME olarak yalnızca .ssh dizini içeren bir dizin kurmaya istekli olmanız koşuluyla, HOME ayarı da işe yarayabilir; bu bir identity.pub veya IdentityFile ayarı içeren bir config dosyası içerebilir.

Yorumlar (17)

my_git_ssh_wrapper'ın içeriği:

#!/bin/bash

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

Daha sonra anahtarı kullanarak yapabilirsiniz:

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

GIT_SSH ortam değişkenini kullanabilirsiniz. Ancak ssh ve seçenekleri bir kabuk betiğine sarmanız gerekecektir.

Git kılavuzuna bakın: Komut kabuğunuzda man git.

Yorumlar (0)