Назад | Перейти на главную страницу

Как настроить безопасный репозиторий Git?

Я следовал этому руководству, чтобы настроить репозиторий git на экземпляре EC2. http://git-scm.com/book/ch4-4.html. В основном я добавляю новый git user и включите мой открытый ключ в authorized_keys. После настройки git пользователь, я просто инициализирую новое репо git init --bare.

Однако я заметил, что могу легко клонировать его, не прибегая к моему закрытому ключу. Есть ли способ заставить его быть доступным только через SSH, чтобы соблюдались authorized_keys? Я предполагаю, что он использует git по умолчанию, то есть порт 9418, который, похоже, не поддерживает аутентификацию.

ОБНОВИТЬ

Хорошо, я пробовал это на новой коробке без ключей, и мне не удалось войти в систему или клонировать свое репо. Я понял, что ssh-add -D по какой-то причине у меня не работает. Я выбираю наиболее полезный ответ, спасибо.

Порт 9814 - это где git-daemon запускается (например, клонировать, git clone git://git.example.com/repo). Это предназначено для внутреннего git репозиторий. Читать документация Больше подробностей.

У вас есть 2 других варианта настройки удаленного git сервер:

  • SSH-сервер: git clone ssh://git.example.com/git/repo
  • HTTP сервер git clone https://git.example.com/git/repo

SSH намного проще настроить. Вам просто нужно убедиться, что все участники имеют доступ к учетной записи SSH. Обычно это делается с помощью ключей SSH - каждый разработчик добавляет свой открытый ключ в git Аккаунт SSH.

Просто помни:

  • Укажите протокол в своей команде (т. Е. ssh, git, http или https).
  • Убедитесь, что у вас правильно настроен брандмауэр:
    • Обычно порт 22 для ssh
    • Обычно порт 443 для https
    • Два других следует избегать, но для справки порт 9814 для gitи порт 80 для http

Похоже, вы полагаете, что виноват git-daemon. Вы подтвердили, что git-daemon действительно работает в системе? Проверьте список процессов, а также список открытых портов:

$ ps auxwww | grep git-daemon
$ sudo netstat -ptuna | grep 9814

Если git-daemon не запущен и порт 9814 не прослушивается, возможно, что-то еще не так - возможно, у нового пользователя git, которого вы добавили, не установлен пароль или в конфигурации SSH используется Kerberos, и у вас есть существующий действующий сервисный билет.

HTTP и SSH - это только два из полдюжины или около того протоколов, которые поддерживает git. Я считаю, что git всегда использует SSH только с URL-адресами в форме user @ host, поэтому я почти уверен, что это проблема аутентификации вашего пользователя git.

Когда вы клонируете репозиторий, следите за журналом авторизации в вашей системе (обычно /var/log/auth.log или / var / log / secure). Если вы видите SSH-вход для пользователя git во время операции клонирования, то он почти наверняка использует SSH, а не git-daemon.