Може би е доста необичайна ситуация, но искам да задам частен SSH ключ, който да се използва при изпълнение на шел (git) команда от локалния компютър.
В общи линии това е следното:
git clone [email protected]:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser"
Или още по-добре (на Ruby):
with_key("/home/christoffer/ssh_keys/theuser") do
sh("git clone [email protected]:TheUser/TheProject.git")
end
Виждал съм примери за свързване към отдалечен сървър с Net::SSH, който използва определен частен ключ, но това е локална команда. Възможно ли е това?
Нещо подобно би трябвало да работи (предложено от orip):
ssh-agent bash -c 'ssh-add /somewhere/yourkey; git clone [email protected]:user/project.git'
Ако предпочитате подкорпуси, можете да опитате следното (макар че е по-нестабилно):
ssh-agent $(ssh-add /somewhere/yourkey; git clone [email protected]:user/project.git)
Git ще извика SSH, който ще намери своя агент чрез променливата на средата; той на свой ред ще има зареден ключ.
Алтернативно, задаването на HOME
също може да свърши работа, при условие че сте готови да настроите директория, която съдържа само директория .ssh
като HOME
; тя може да съдържа или identity.pub, или конфигурационен файл, задаващ IdentityFile.
Съдържание на my_git_ssh_wrapper:
#!/bin/bash
ssh -i /path/to/ssh/secret/key $1 $2
След това можете да използвате ключа, като направите:
GIT_SSH=my_git_ssh_wrapper git clone [email protected]:TheUser/TheProject.git
Можете да използвате променливата на средата GIT_SSH. Но ще трябва да обхванете ssh и опциите в шел скрипт.
Вижте ръководството на git: man git
в командния шел.