Можливо, досить незвична ситуація, але я хочу вказати приватний SSH-ключ для використання при виконанні команди shell (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, або config file, що встановлює 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
у вашій командній оболонці.