Как настроить частный сервер Git на Linux - PullRequest
9 голосов
/ 06 июня 2011

Я пытался следовать how-set-up-your-own-private-git-server-linux и private-remote-git-repositories-ubuntu-linode , но я У меня все еще проблемы.

Моя локальная среда - это окна и мой удаленный linux. У меня есть пара вопросов:

  1. В первой статье описывается настройка открытого ssh-ключа для сервера - я никогда не делал этого раньше, и я не уверен, где вводить команды (даже не уверен, локальный или удаленный !!): ssh myuser@server.com mkdir .ssh и scp ~/.ssh/id_rsa.pub myuser@server.com:.ssh/authorized_keys
  2. На моем локальном компьютере разработчика я должен работать msysgit ? Есть ли альтернатива, потому что установленная версия занимает 1,4 ГБ! Я установил msysGit-netinstall-1.7.4-preview20110204.exe из http://code.google.com/p/msysgit/downloads/list

Я попытался пропустить создание пользователя git и открытого ключа, создал репозитории на удаленной машине, но затем, когда я пытаюсь git remote add origin ssh://[username]@[domain/ip/hostname]/srv/git/[project-name] от имени пользователя root, он говорит: fatal: Not a git repository (or any of the parent directories): .git

Ответы [ 4 ]

18 голосов
/ 06 июня 2011

Я не уверен, должно ли это быть здесь или его лучше перенести на другой сайт, но, поскольку я смогу помочь, я продолжу и отвечу.

Я просто просмотрел статьи, на которые вы ссылались. Похоже, они оба имеют дело с доступом к git-серверу через ssh, о котором вы упомянули, поэтому я сосредоточусь на этом.

Сначала на вашем сервере:

Вам необходимо настроить учетную запись на сервере, чтобы вы могли войти в систему. Это может быть общая учетная запись git или ваша личная учетная запись. На данный момент мы предполагаем, что вы настраиваете его для работы с личным аккаунтом. Вам нужно создать свою учетную запись, затем где-нибудь доступную для этой учетной записи (скажем, в своем домашнем каталоге), создать репозиторий git.

mkdir myrepo.git
cd myrepo.git
git --bare init --shared=all

Итак, теперь у вас есть git-репозиторий на сервере. В зависимости от используемого вами git-клиента, вам может не понадобиться связываться с ключами прямо сейчас. Если SSH настроен на вашем сервере, чтобы разрешить вход в систему с паролем, то вы можете просто подключиться и ввести свой пароль, когда вам нужно взаимодействовать с сервером. Если вы хотите настроить ключи, вам нужно сгенерировать открытый ключ ssh. Я не знаю, как это сделать в Windows, но в Linux вы бы сделали что-то вроде:

ssh-keygen -t rsa -b 1024

Эта команда сгенерирует два файла: "id_rsa" и "id_rsa.pub"; какой бы инструмент вы ни использовали, он также должен генерировать два файла: открытый ключ и закрытый ключ. Они могут иметь разные имена, но пока предположим, что "id_rsa.pub" - это имя вашего файла открытого ключа.

Вы хотите скопировать открытый ключ на сервер, вы можете использовать scp, ftp или просто переместить его с помощью флэш-накопителя. В любом случае, как только вы получите его на сервер, и он станет доступен для вашего пользователя, войдите в систему как пользователь на сервере. Вы хотите добавить открытый ключ в свой файл "author_hosts", поэтому после входа в свою учетную запись на сервере сделайте следующее:

cd
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_hosts
rm id_rsa.pub

Теперь со своей рабочей станции вам необходимо настроить свой ssh-клиент на использование сгенерированного вами закрытого ключа. Опять же, я не знаю, как это сделать в Windows, и это, вероятно, будет зависеть от того, какой ssh-клиент вы используете, поэтому вам нужно будет получить эту информацию где-то еще.

Далее вам нужно создать свой локальный репозиторий, добавить несколько файлов и сделать коммит. Обратите внимание, что вы не можете клонировать удаленный репозиторий, который вы создали, потому что там ничего нет. После того, как вы сделали некоторые коммиты локально, вам нужно установить удаленный сервер в вашем хранилище.

Если вы используете инструменты командной строки git, вы можете запустить:

git remote add origin user@yourserver:myrepo.git

Если вы поместили репозиторий где-то, кроме вашего домашнего каталога, используйте полный путь:

git remote add origin user@yourserver:/path/to/repo.git

Обратите внимание, что вам нужен ".git", так как имя вашего каталога имеет ".git" как часть имени.

Если вы используете инструмент с графическим интерфейсом, вместо этого вы просто редактируете файл конфигурации для хранилища. Это будет на верхнем уровне вашего репозитория в «.git / config». Вы хотите добавить что-то вроде

[remote "origin"]
    url = user@yourserver:/path/to/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

Теперь, когда ваш пульт настроен, и у вас есть некоторые коммиты локально, вы можете перенести свою основную ветку на сервер. Если вы используете командную строку, используйте:

git push origin master

Или, если вы работаете в другой ветке:

git push origin mybranch

Если вы используете внешний интерфейс GUI для get, вам нужно поискать документацию для этого инструмента о том, как нажать.

0 голосов
/ 24 июля 2014

Я следовал за наиболее проголосовавшим ответом и не получил его на работу.Я нашел этот урок: https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 и получил его работать.Я думаю, что проблема заключалась в том, что на сервере открытый ключ должен быть скопирован в файл "authorized_keys", а не в Authorized_hosts.

0 голосов
/ 10 августа 2012

Я бы порекомендовал использовать Gitolite , который позволяет настроить git-хостинг на центральном сервере с такими замечательными функциями, как контроль доступа и создание / управление репозиториями и т. Д.

А для Windows инструмент под названием git-scm может использоваться для настройки клиента git, а также иметь панель графического интерфейса для репозиториев git. После установки этого инструмента git вы получите инструмент git bash и графический интерфейс пользователя git .

Gitolite упрощает настройку сервера и клиента git.

Я надеюсь, что это может помочь новым людям, которые ищут эффективное решение для настройки сервера и клиентов git-хостинга, в несколько простых для понимания простых шагов.

0 голосов
/ 17 июня 2011
  1. Я пытался сгенерировать пары ключей, используя шпаклевку, но не смог заставить ее работать.В конце концов я понял, что могу генерировать ключи через командную строку msysgit, используя ssh-keygen -C "git@example.com" -t rsa.Скопируйте открытый ключ на сервер, используя nano /home/git/.ssh/authorized_keys, и привет!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...