Подтвердить что ты не робот

Управление открытыми ключами ssh в хранилищах организаций github

Мне было интересно, есть ли у кого-то хороший, чистый и безопасный способ управления доступом к репозиториям github Organization на своих серверах?

Кажется, что вы можете прикреплять ключи pub только к своей личной учетной записи и не можете ограничивать доступ исключительно к организации.

У нас есть бета-сервер, где мы размещаем несколько проектов, поэтому развертываем ключи, потому что они должны быть уникальными, не идеальны. Было бы неплохо предоставить глобальный доступ к организации, но я не хочу предоставлять сервер, на котором у нас есть фрилансеры, полный доступ к моей личной учетной записи (сервер получает доступ к организации, что хорошо, но также к моим личным проектам и к любой другой организации, к которой я принадлежу, что плохо).

Два обходных решения, которые я вижу, - это либо настроить фиктивного пользователя github для прохождения, что кажется глупым, либо включить передачу агента ssh, что кажется угрозой безопасности (я не лучший сервер-админ).

Друг предложил настроить сервер как удаленный, чтобы нажимать, но похоже, что это решение для групповой поддержки.

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

Я все уши, если кто-то хочет поделиться тем, что работает/работает для своей организации github.

Я, наверное, просто укушу пулю и создаю фиктивного пользователя github и назову это днем, мне нужно сделать работу.

4b9b3361

Ответ 1

Альтернативой ответу от sergey_mo (и в качестве прямого ответа на вопрос Михала Сайбе) является создание нескольких ключей ssh, как описано chalien on githib:

https://gist.github.com/jexchan/2351996

Ответ 2

Я не понимаю, почему добавление фиктивной учетной записи настолько плохо для автоматического развертывания, если вы запускаете собственный бета-сервер в качестве промежуточной области, прежде чем нажимать на GitHub. То есть, если вы хотите, чтобы betacode был закрытым.

Обычным GitHub-способом было бы добавить всех соавторов и просто иметь стабильный проект и бета-версию. Вы автоматически загрузите текущую бета-версию на ваш бета-сервер для тестирования (там не нужен ключ ssh), и если ваши тесты удастся, вы втягиваете слияния из бета-версии в стабильный проект.

Ответ 3

Небольшое примечание о CI:
Например, если вы используете Jenkins, и вам нужно получить доступ к более чем 1 проекту, вам необходимо:
1. добавить открытый ключ к одной учетной записи пользователя github
2. добавьте этого пользователя в качестве владельца (для доступа ко всем проектам) или в качестве соавтора в каждом проекте.

Многие открытые ключи для одного пользователя системы не будут работать, потому что GitHub найдет первый сопоставленный ключ развертывания и отправит обратно ошибку, например "ОШИБКА: разрешение пользователю /repo 2 на пользователя /repo 1"

http://help.github.com/ssh-issues/

Ответ 4

Вы можете обойти это, если ваши приложения запускаются разными пользователями (по одному пользователю на приложение). Я имею в виду серверных пользователей, а не пользователей github. Это хорошая практика в любом случае на серверах с несколькими приложениями.

Каждый пользователь имеет свою собственную пару ключей ssh, поэтому у вас есть много уникальных ключей развертывания (по одному на gitub-репо).

Я использую этот подход, когда это возможно. Однако есть ситуации, когда один и тот же пользователь запускает несколько приложений, и, вероятно, это невозможно сделать с помощью ключей развертывания github. Я также ищу подходящее решение для таких случаев.