Задача: создать центральный репозиторий на сервере.
Доступ к репозиторию – по SSH (настройка с доступом по HTTP описана в посте Git: свой репозиторий под NGINX + WebDAV + uWSGI, но это долгий и муторный способ).
Авторизация – по RSA-ключу.
Установка выполняется на:
# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 7.8 (wheezy) Release: 7.8 Codename: wheezy
И Windows 8 на клиентской машине.
На сервере устанавливаем Git:
# aptitude install git
Создаём пользователя:
# adduser git Adding user `git' ... ... Is the information correct? [Y/n] y
Переключаемся на него:
# su -l git
Создаём каталог для репозитория:
$ mkdir -p ~/repos/test.git && cd repos/test.git
Инициализируем его:
$ git init --bare Initialized empty Git repository in /home/git/repos/test.git/
Обновляем информацию о сервере:
$ git update-server-info
$ ls -l total 32 drwxr-xr-x 2 git git 4096 Apr 14 05:12 branches -rw-r--r-- 1 git git 66 Apr 14 05:12 config -rw-r--r-- 1 git git 73 Apr 14 05:12 description -rw-r--r-- 1 git git 23 Apr 14 05:12 HEAD drwxr-xr-x 2 git git 4096 Apr 14 05:12 hooks drwxr-xr-x 2 git git 4096 Apr 14 05:12 info drwxr-xr-x 4 git git 4096 Apr 14 05:12 objects drwxr-xr-x 4 git git 4096 Apr 14 05:12 refs
С клиентской машины – проверяем:
> git clone git@172.***.***.5:/home/git/repos/test.git Cloning into 'test'... The authenticity of host '172.***.***.5 (172.***.***.5)' can't be established. ECDSA key fingerprint is 9e:5c:c2:05:bf:db:fc:c1:1c:d9:1f:3c:b2:c5:4a:5d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.***.***.5' (ECDSA) to the list of known hosts. git@172.***.***.5's password: warning: You appear to have cloned an empty repository. Checking connectivity... done.
d:Repos>dir /b test
Готово.
Осталось настроить авторизацию по ключу.
Как сгенерировать свой ключ под Windows – описано в статье Putty: настройка авторизации SSH по ключу.
Создаём ключ, и приватную часть добавляем в Pageant.
На сервере в файле /etc/ssh/sshd_config
включаем авторизацию по ключу:
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys
Перезапускаем демон sshd
:
# service ssh restart Restarting OpenBSD Secure Shell server: sshd.
Вписываем публичную часть своего ключа (её можно увидеть в Puttygen) в файл /home/git/.ssh/authorized_keys
.
На Windows-машине добавляем переменную GIT_SSH
, котоаря указывает на plink.exe
:
> set GIT_SSH=d:OptPuttiesplink.exe
Проверяем:
> git clone git@172.***.***.5:/home/git/repos/test.git Cloning into 'test'... warning: You appear to have cloned an empty repository. Checking connectivity... done.
Готово.