Хочу поделиться своим опытом, чтоб банально кому-то сэкономить время. Аргументированные замечания приветствуются. Не является подробным мануалом, я лишь просто перечисляю последовательность своих действий.
Понадобился мне на днях собственный git server дабы совместно с товарищами было удобнее разрабатывать собственный проект. Благо существует соответствующий пакет для любимого DS.
Итак порядок моих действий:
1. После установки Git назначил пользователей которым доступен репозиторий
2. Установил на свой Win 7 git + TortoiseGit, выставил имя и мыло для коммитов (если ставите git, то я думаю не обязательно объяснять для чего это делается)
3. С помощью PuTTYgen генерирую открытый и приватный ключи, сохранил их оба на жёсткий диск своего компьютера. Для приватного как видно из скриншота ниже установил пароль.
4. Под учёткой админа (!!!) захожу в веб-интерфейс, захожу в папку homes->dark_ghost (то бишь в папку пользователя). Создаю в этой папке подпапку ".ssh". Правой кнопкой по папке, нажимаем свойства, в поле "Владелец:" выставляем пользователя (в нашем случае это "dark_ghost"). В "Группа:" ставим группу "users". Копирую в эту папку свой публичный ключ, переименовываю его в "authorized_keys", как в примере с папкой выставляем владельцем пользователя.
5. Запускаем Putty, подключаемся по ssh к серверу (обязательно под учёткой админа!). Находим конфиг SSH:
cd /etc/ssh/ ls -la
Открываем для редактирования "sshd_config":
vi sshd_config
Перемещением курсора находим строку:
#PubkeyAuthentication yes
Стираем перед ней "#" в итоге получилось:
PubkeyAuthentication yes
Аналогично находим строку (она чуть ниже предыдущей):
#AuthorizedKeysFile .ssh/authorized_keys
И так же превращаем её в:
AuthorizedKeysFile .ssh/authorized_keys
Сохраняем изменения в файле введя команду ":x"
6. Далее любым способом (через консоль или веб-интерфейс) создаём папку с общим доступом (для пользователей репозитория). В SSH под админом заходим в эту папку (она у меня находится псевдо в корне рядом с "homes", называется "repos" значит расположена она "/volume1/repos"):
cd /volume1/repos
Если нужно с помощью команды "mkdir имя_папки" создаём папку и заходим в неё "cd имя_папки". Если нам это не надо, то просто разворачиваем пустой репозиторий (параметр "--bare") прямо в текущей папке:
git --bare init git update-server-info cd .. chown -R :users имя_папки_с_репозиторием
где:
users -- группа-владелец репозиторием. Возможно использовать иную группу в которую включены наши пользователи git
имя_папки_с_репозиторием -- по названию параметра думаю понятно его значение
Всё, с сервером закончили разбираться.
7. Подключаем наш пустой репозиторий к локальному. В нужной нам папке на компьютере правой кнопкой из меню выбираем "Git Клонировать".
В первой строке объявляем путь к репозиторию на нашем сервере:
ssh://[email protected].х.x:YYY/volume1/repos/
где:
dark_ghost -- имя пользователя
192.168.х.x -- адрес/доменное имя сервера
YYY -- порт SSH
/volume1/repos -- путь на сервере к нашему репозиторию
Загружаем наш приватный ключ. Если ранее на него установили пароль, то впоследствии его у нас спросят. Жмякаем "ОК" и если мы всё сделали правильно у нас на компьютере появилась копия репозитория с сервера.