Вопрос по github, ssh, git – можно ли добавить ssh-add глобально
Я могу сделатьssh-add противidentifyFile которые остаются навсегда, в настоящее время они преобладают только для текущего активногоssh session (т. е. identityFile, добавленный с помощью ssh-add, теряется при создании нового ssh-сеанса с сервером, можно найти, выполнив ssh-add -L)
Проблема в том, что на нашем сервере amazon есть различные проекты с репо в github.
Теперь у каждого из репоaccess right based on the users сказатьuser A has access right only for project A а такжеB has an access right on project B только
С этим набором прав доступа (в github) теперь каждый пользователь может выполнять операции git (например, git fetch, git push и т. Д.) Только тамrespective project (что мы и хотим)
Теперь все, что я хочу, - это когда пользователь выполняет операцию git для соответствующего проекта, который я хочу.ssh-agent взять все ssh-ключи в учетных записях и найти тот, который соответствует конкретным пользователям
Note
that each ssh-key has a phrases(a unique secret know to each user there own) associated with it, prompted to enter when perform git function.
для достижения этого мы делаем
ssh-add /root/.ssh/A
or
ssh-add /root/.ssh/B
Но, как упоминалось ранее, это только остаться дляactive ssh-session ,exit или сделатьnew ssh сессия с сервером, информация о ssh-addlost, можно найти, запустивssh-add -L
Я также попытался определить IdentityFile в .ssh / config, как это описано в этомвопрос
что-то вроде этого
Host github.com
Hostname github.com
User git
IdentityFile /root/.ssh/A
Host github.com
Hostname github.com
User git
IdentityFile /root/.ssh/B
Это работает только для одного пользователя (иногда это работает для «A», а иногда нет, то же самое относится и к «B»)
Может ли быть достигнута эта сегрегация или я звучу слишком амбициозно?
Спасибо
вам нужно иметь Уникальный имена хостов, перечисленные в IdentityFile. Поскольку вы оба раза использовали github.com в качестве имени хоста, при попытке подключиться к github.com он не знает, какой из них использовать.
У нас похожая настройка. У нас есть 5 пользователей, каждый из которых входит в одну учетную запись. Тем не менее, Github должен видеть их каждый с помощью своего ssh-ключа, поэтому у нас есть 5 ключей. Хитрость заключается в том, чтобы ваш файл выглядел следующим образо
Host UserA_github
Hostname github.com
User git
IdentityFile /root/.ssh/A
Host UserB_github
Hostname github.com
User git
IdentityFile /root/.ssh/B
Когда бы ни UserB хочет сделать что-то связанное с git (например, клонировать один из своих репозиториев), они будут работать ...
git clone UserB_github:UserB/MyRepo
или что-то подобное. Это будет вести себя так, как будто они вошли ...
git clone github.com:UserB/MyRepo
за исключением того, что он будет использовать соответствующий IdentityFile / закрытый ключ.
Я понимаю, что мое решение не использует постоянныйssh-add
но я думаю, что это даст вам ту же производительность, что и вы. К сожалению, ваши пользователи должны будут вводить свои парольные фразы каждый раз, когда они выполняют транзакцию.