#windows #linux #git #ssh
#Windows #linux #git #ssh
Вопрос:
Я попытался следовать инструкциям по настройке вашего собственного частного git-сервера в Linux и частных удаленных git-репозиториев в Ubuntu-linode, но у меня все еще возникают проблемы.
Моя локальная среда — Windows, а мой удаленный linux. У меня есть пара вопросов:
- В первой статье описывается настройка открытого ssh-ключа для сервера — я никогда не делал этого раньше, и я не уверен, где вводить команды (даже не уверен, локальные или удаленные !!):
ssh myuser@server.com mkdir .ssh
иscp ~/.ssh/id_rsa.pub myuser@server.com:.ssh/authorized_keys
- На моем локальном компьютере разработчика я должен запускать 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
Ответ №1:
Я не уверен, должно ли это быть здесь или было бы лучше перенести на другой сайт, но поскольку я мог бы помочь, я продолжу и отвечу.
Я только что просмотрел статьи, на которые вы ссылались. Похоже, что они оба имеют дело с доступом к 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 или просто переместить его с помощью флэш-накопителя. В любом случае, как только вы установите его на сервер и он станет доступен вашему пользователю, войдите в систему как ваш пользователь на сервере. Вы хотите добавить открытый ключ в свой файл «authorized_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, то вам нужно посмотреть документацию по этому инструменту о том, как нажимать.
Комментарии:
1. спасибо за подробный ответ, это помогло мне настроить его, однако я предоставил свое собственное решение, потому что оно не отвечало на конкретные вопросы. Тем не менее, я проголосовал «за» за ваше время и полезный ответ. Спасибо!
2. при использовании
pagent
в качестве моего ssh-агента в Windows я также рекомендую добавить переменную среды GIT_SSH и указать ее на мой путь к plink, напримерGIT_SSH=c:binplink.exe
3. куда на сервере мне нужно скопировать открытый ключ?
Ответ №2:
Я хотел бы порекомендовать использовать Gitolite, который позволяет настроить git-хостинг на центральном сервере с отличными функциями, такими как контроль доступа и создание / управление репозиториями и т.д.
А для Windows инструмент под названием git-scm может использоваться для настройки клиента git, а также иметь панель GUI для репозиториев git. После установки этого инструмента git вы получите инструмент git bash и графический интерфейс git.
Gitolite упрощает настройку сервера и клиента хостинга git.
Я надеюсь, что это может помочь новым людям, которые ищут эффективное решение для настройки сервера хостинга git и клиентов с помощью нескольких простых шагов, которые легко понять.
Ответ №3:
Я следил за ответом, за которым проголосовали больше всего, и я не заставил его работать. Я нашел это руководство:https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys—2 и у меня все заработало. Я думаю, проблема заключалась в том, что на сервере открытый ключ должен быть скопирован в файл «authorized_keys», а не «authorized_hosts».
Ответ №4:
- Я пытался сгенерировать пары ключей с помощью putty, но не смог заставить его работать. В конце концов я понял, что могу генерировать ключи через командную строку msysgit с помощью
ssh-keygen -C "git@example.com" -t rsa
. Скопируйте открытый ключ на сервер с помощьюnano /home/git/.ssh/authorized_keys
и вуаля! - Я загрузил полный исходный код, отсюда и размер! Приложение без исходного кода
Git-1.7.4-preview20110204.exe
занимало всего 13 МБ через http://code.google.com/p/msysgit/downloads/list?can=3