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

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

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

ОБНОВИТЬ

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

2 ответа

Решение

Порт 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.

Другие вопросы по тегам