Вопрос по github, ssh, git – можно ли добавить ssh-add глобально

4

Я могу сделать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»)

Может ли быть достигнута эта сегрегация или я звучу слишком амбициозно?

Спасибо

Можете ли вы отредактировать свой вопрос и сказать (в конце) именно то, что вы пытаетесь сделать? Причина, по которой я спрашиваю, состоит в том, что, вероятно, существует простой способ ее решения, но нам нужно знать вашу цель. Ваш текущий метод не так хорош и нуждается в замене! gahooa
@ gahooa Отредактировано, дайте мне знать, если это все еще требует дальнейшего редактирован Viren

Ваш Ответ

1   ответ
4

вам нужно иметь Уникальный имена хостов, перечисленные в 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 но я думаю, что это даст вам ту же производительность, что и вы. К сожалению, ваши пользователи должны будут вводить свои парольные фразы каждый раз, когда они выполняют транзакцию.

Конечно, несколько пользователей, совместно использующих одну учетную запись, вероятно, не идеальны с точки зрения безопасности, но иногда есть причины пойти по этому пути. Daniel Kessler
Спасибо за пару часов или около того, чтобы проверить это, и я обязательно приму ответ Viren

Похожие вопросы