Как настроить безопасный 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
- Обычно порт 22 для
Похоже, вы полагаете, что за это отвечает 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.