2012-05-26 5 views
4

Могу ли я SSH-добавить против identifyFile, что остаться навсегда, в настоящее время превалируют только для текущего активного сеанса SSH (т.е. IdentityFile добавлены с помощью SSH-добавить теряться, когда новый сеанс ssh выполняется с сервером, можно найти, запустив ssh-add -L)может SSH-добавить добавить глобально

Проблема в том, что наш сервер амазонок имеет различные проекты с репо, расположенными в github.

Теперь каждый из репо имеет право доступа на основе пользователей говорят пользователь А имеет право доступа только для проекта и B имеет право доступа на проекте B только

С этим право доступа устанавливается (в GitHub) Теперь каждый пользователь может выполнить операцию GIT (например, принести мерзавец, мерзавец нажать и т.д.) только там соответствующий проект (который является то, что мы хотим)

Теперь все, что я хочу, когда пользователь выполняет git o peration на там соответствующем проект я хочу SSH-агента принять все SSH-ключи на счетах и ​​найдите тот, который соответствует к тому, что конкретным пользователям

Примечанием

, что каждый SSH-ключ фразы (уникальный секрет знать каждому пользователю есть), связанный с ним, предложили ввести при выполнении функции git.

для достижения этой цели мы делаем

ssh-add /root/.ssh/A 

или

ssh-add /root/.ssh/B 

Но, как упоминание в начале этого только пребывания для активного SSH-сессии, выхода или сделать новый сеанс ssh с сервером ssh-add in fo - утерян. можно найти, запустив SSH-добавить -L

Я также попытался определения IdentityFile в .ssh/конфигурации, как это описывают в этом question

что-то вроде этого

Host github.com 
     Hostname github.com 
     User git 
     IdentityFile /root/.ssh/A 

Host github.com 
     Hostname github.com 
     User git 
     IdentityFile /root/.ssh/B 

Это только работа для одного пользователя (когда-то он работает для «А», а когда-то это не так, то же самое с «В»)

Может ли это сегрегация быть достигнута или я немного побаиваюсь амбициозным

Thanks

+0

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

+0

@gahooa Отредактировано, дайте мне знать, если он еще нуждается в дальнейшем редактировании – Viren

ответ

4

Вы очень близки к редактированию IdentityFile. Тем не менее, вы должны иметь уникальных имен хостов, перечисленных в 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 clone UserB_github:UserB/MyRepo 

или что-то подобное. Это будет вести себя так, как если бы они ввели ...

git clone github.com:UserB/MyRepo 

за исключением того, что он будет использовать соответствующий ключ IdentityFile/private.

Я понимаю, что мое решение не использует постоянный ssh-add, но я думаю, что это даст вам такую ​​же производительность, какую вы хотите. К сожалению, ваши пользователи должны будут вводить свою кодовую фразу каждый раз, когда они совершают транзакцию.

+0

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

+0

Спасибо, просто дайте пару часов или около того, чтобы проверить это, и я обязательно приму ответ, тогда – Viren

Смежные вопросы