Git local server linux

4.4 Git on the Server — Setting Up the Server

Setting Up the Server

Let’s walk through setting up SSH access on the server side. In this example, you’ll use the authorized_keys method for authenticating your users. We also assume you’re running a standard Linux distribution like Ubuntu.

A good deal of what is described here can be automated by using the ssh-copy-id command, rather than manually copying and installing public keys.

First, you create a git user account and a .ssh directory for that user.

Next, you need to add some developer SSH public keys to the authorized_keys file for the git user. Let’s assume you have some trusted public keys and have saved them to temporary files. Again, the public keys look something like this:

You just append them to the git user’s authorized_keys file in its .ssh directory:

Now, you can set up an empty repository for them by running git init with the —bare option, which initializes the repository without a working directory:

Then, John, Josie, or Jessica can push the first version of their project into that repository by adding it as a remote and pushing up a branch. Note that someone must shell onto the machine and create a bare repository every time you want to add a project. Let’s use gitserver as the hostname of the server on which you’ve set up your git user and repository. If you’re running it internally, and you set up DNS for gitserver to point to that server, then you can use the commands pretty much as is (assuming that myproject is an existing project with files in it):

At this point, the others can clone it down and push changes back up just as easily:

With this method, you can quickly get a read/write Git server up and running for a handful of developers.

You should note that currently all these users can also log into the server and get a shell as the git user. If you want to restrict that, you will have to change the shell to something else in the /etc/passwd file.

You can easily restrict the git user account to only Git-related activities with a limited shell tool called git-shell that comes with Git. If you set this as the git user account’s login shell, then that account can’t have normal shell access to your server. To use this, specify git-shell instead of bash or csh for that account’s login shell. To do so, you must first add the full pathname of the git-shell command to /etc/shells if it’s not already there:

Now you can edit the shell for a user using chsh -s :

Now, the git user can still use the SSH connection to push and pull Git repositories but can’t shell onto the machine. If you try, you’ll see a login rejection like this:

At this point, users are still able to use SSH port forwarding to access any host the git server is able to reach. If you want to prevent that, you can edit the authorized_keys file and prepend the following options to each key you’d like to restrict:

The result should look like this:

Now Git network commands will still work just fine but the users won’t be able to get a shell. As the output states, you can also set up a directory in the git user’s home directory that customizes the git-shell command a bit. For instance, you can restrict the Git commands that the server will accept or you can customize the message that users see if they try to SSH in like that. Run git help shell for more information on customizing the shell.

Читайте также:  Диспетчер realtek high definition audio для windows 10

Источник

Как настроить Git Server

Когда дело доходит до хостинга Git, у вас есть несколько вариантов. GitHub, Gitlab и Bitbucket — популярные решения, но стоит рассмотреть возможность запуска собственного сервера Git.

Настройка Git Server позволяет создавать частные репозитории без ограничений бесплатных планов провайдеров.

В этом руководстве мы объясним, как настроить чистый сервер Git в Linux. Эта установка хороша, если у вас мало репозиториев, а соавторы технически подкованы. В противном случае вам следует подумать об установке самостоятельного приложения git, такого как Gitea, Gogs или Gitlab .

Сервер Git можно настроить на любой удаленной машине Linux или даже в вашей локальной системе.

Настройка сервера Git

Первый шаг — установить Git на ваш сервер.

Если вы используете Debian или Ubuntu, обновите индекс локального пакета и установите git , выполнив следующие команды от имени пользователя sudo:

Чтобы установить пакет git на серверы CentOS, введите:

Затем создайте нового пользователя, который будет управлять репозиториями Git:

Домашний каталог пользователя установлен в /home/git . Все репозитории будут храниться в этом каталоге. Мы не устанавливали пароль для пользователя «git», вход в систему будет возможен только с использованием ключей ssh.

Переключитесь на пользователя «git» с помощью команды su :

Выполните следующие команды, чтобы создать каталог SSH и установить правильные разрешения :

Создайте файл с именем

/.ssh/authorized_keys котором будут храниться SSH-ключи авторизованных пользователей:

Вот и все. Настройка сервера завершена. Теперь вы готовы создать свой первый репозиторий Git.

Выполните следующую команду, чтобы создать новый пустой репозиторий:

Вы можете назвать каталог как хотите. Важно создать репозиторий в домашнем каталоге пользователя «git».

Настройка локального репозитория Git

Чтобы иметь возможность отправлять локальные изменения git на сервер Git, вам нужно добавить открытый ключ SSH локального пользователя в файл authorized_keys удаленного пользователя «git».

Если у вас уже есть пара ключей SSH, созданная в вашей локальной системе, вы можете отобразить открытый ключ, набрав:

Результат должен выглядеть примерно так:

Если вы получаете сообщение об ошибке « No such file or directory , это означает, что у вас нет пары ключей SSH, созданной на вашем локальном компьютере.

Чтобы сгенерировать новую пару ключей SSH, используйте следующую команду:

Скопируйте вывод команды cat выше и вернитесь в консоль сервера Git.

На сервере откройте текстовый редактор и вставьте открытый ключ, который вы скопировали с локального компьютера, в файл

Весь текст открытого ключа должен быть в одной строке.

Мы предполагаем, что пакет Git уже установлен на вашем локальном компьютере. Если нет, установите его так же, как описано в предыдущих разделах.

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

Инициализируем репозиторий git:

Последний шаг — добавить git remote в ваш локальный репозиторий:

Не забудьте заменить git_server_ip на имя хоста или IP-адрес вашего сервера Git.

Чтобы убедиться, что все настроено правильно, создайте тестовый файл :

Добавьте изменения в область подготовки:

Отправьте изменения локального репозитория в удаленный репозиторий:

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

Чтобы добавить нового соавтора, просто скопируйте его открытый SSH-ключ в файл

/.ssh/authorized_keys пользователя «git».

Вы можете использовать те же шаги для создания новых репозиториев. Важно отметить, что удаленный репозиторий должен существовать до того, как вы добавите git remote в свой локальный репозиторий.

Выводы

В этом руководстве мы показали вам, как настроить собственный частный сервер Git и создать репозитории.

Если вы столкнулись с проблемой или хотите оставить отзыв, оставьте комментарий ниже.

Читайте также:  Linux route to network

Источник

Собственный сервер Git на базе Ubuntu или Debian/GNU Linux

Я встречал в сети много tutorial’ов по установке своего сервера git как на gitweb, так и на webdav, но, увы, они либо были только по одному из вышеназванных пунктов, не освещая другой, либо банально не работали. Вчера возникла необходимость поднять свой сервер репозиториев. Потратил пару часов — поднял, теперь хочу поделиться опытом, потому что считаю проблему актуальной 🙂

По данному руководству был создан репозиторий git.shadowircd.net

Для начала сделаем install некоторых пакетов aptitude:

aptitude install git-core git-svn gitweb

a2enmod dav
a2enmod dav_fs
a2enmod rewrite
a2enmod env

$my_uri = “http://git.domain.tld”; # адрес репозиториев
$site_name = “git.domain.tld”; # название сайта, отображается в заголовке
$projectroot = “/www/git.domain.tld/htdocs/git/”; # путь к репозиториям git на жёстком диске

$git_temp = “/tmp”;
$home_link = $my_uri; # ссылка на «домашнюю страничку»
# $home_text = “indextext.html”; # текст, можно расскоментировать и вставить свой
$projects_list = $projectroot;
$stylesheet = “/gitweb/gitweb.css”;
$logo = “/gitweb/git-logo.png”;
$favicon = “/gitweb/git-favicon.png”;
$projects_list_description_width = 40;

DocumentRoot /www/git.domain.tld/htdocs
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

RewriteEngine on
RewriteRule ^/([a-zA-Z0-9_\-]+\/\.git)/?(\?.*)?$ /cgi-bin/gitweb.cgi/$1 [L,PT]

SetEnv GITWEB_CONFIG /www/git.domain.tld/gitweb.conf
Alias /gitweb /usr/share/gitweb/

Options FollowSymLinks
AllowOverride None
Order allow,deny
allow from all

Источник

4.4 Git на сервере — Настраиваем сервер

Настраиваем сервер

Давайте рассмотрим настройку доступа по SSH на стороне сервера. В этом примере мы будем использовать метод authorized_keys для аутентификации пользователей. Мы подразумеваем, что вы используете стандартный дистрибутив Linux типа Ubuntu.

Вместо ручного копирования и установки открытых ключей, многое из описанного ниже может быть автоматизировано за счёт использования команды ssh-copy-id .

Для начала создадим пользователя git и каталог .ssh для этого пользователя:

Затем вам нужно добавить открытые SSH-ключи разработчиков в файл authorized_keys пользователя git . Предположим, у вас уже есть несколько таких ключей и вы сохранили их во временные файлы. Напомним, открытый ключ выглядит примерно так:

Вы просто добавляете их в файл .ssh/authorized_keys в домашнем каталоге пользователя git :

Теперь вы можете создать пустой репозиторий для них, запустив git init с параметром —bare , что инициализирует репозиторий без рабочего каталога:

После этого Джон, Джози или Джессика могут отправить первую версию их проекта в этот репозиторий, добавив его как удаленный и отправив соответствующую ветку. Заметьте, что кто-то должен заходить на сервер и создавать голый репозиторий каждый раз, когда вы хотите добавить проект. Пусть gitserver — имя хоста сервера, на котором вы создали пользователя git и репозиторий. Если он находится в вашей внутренней сети и вы создали DNS запись для gitserver , указывающую на этот сервер, то можно использовать следующие команды как есть (считая что myproject это существующий проект с файлами):

Теперь все остальные могут клонировать его и отправлять в него изменения:

Этим способом вы можете быстро получить Git-сервер с доступом на чтение/запись для небольшой группы разработчиков.

Заметьте, что теперь все эти пользователи могут заходить на сервер как пользователь git . Чтобы это предотвратить, нужно изменить ему оболочку на что-то другое в файле /etc/passwd .

Вы можете легко ограничить пользователя git только действиями, связанными с Git, с помощью ограниченной оболочки git-shell , поставляемой вместе с Git. Если указать её в качестве командного интерпретатора для пользователя git , то он не сможет получить доступ к обычной командной оболочке на вашем сервере. Для её использования, укажите git-shell вместо bash или csh для пользователя git . Для этого вы должны сначала добавить git-shell в /etc/shells если её там ещё нет:

Теперь можно изменить оболочку для пользователя используя chsh -s :

Теперь пользователь git может использовать SSH соединение только для работы с репозиториями Git и не может зайти на машину. Если вы попробуете войти в систему, то вход будет отклонён:

На текущий момент пользователи всё ещё могут использовать перенаправление порта SSH для доступа к другим Git серверам, к которым текущий может подключиться. Если это нужно отключить, вы можете добавить следующие опции в файл authorized_keys перед теми ключами, для которых нужно применить это ограничение:

Читайте также:  What are log files in windows

В результате файл будет выглядеть следующим образом:

Теперь сетевые команды Git будут работать, но пользователи не смогут заходить на сервер. Вы также можете создать подкаталог в домашнем каталоге пользователя git , чтобы немного изменить поведение git-shell . Например, вы можете ограничить команды Git, которые сервер будет принимать или сообщение, которое увидят пользователи если попробуют зайти по SSH. Для получения дополнительной информации по настройке оболочки запустите команду git help shell .

Источник

Как настроить Git-сервер на Linux

Настройка Git Server позволяет вам создавать частные репозитории без ограничений бесплатных планов провайдеров.

В этой статье мы объясним, как настроить пустой сервер Git в Linux. Эта настройка хороша, если у вас мало репозиториев, а соавторы технически подкованы. В противном случае вам следует рассмотреть возможность установки самостоятельно размещенного git-приложения, такого как Gitea, Gogs или Gitlab.

Сервер Git может быть установлен на любой удаленной машине с Linux или даже в вашей локальной системе.

Настройка Git-сервера

Первым шагом является установка Git на ваш сервер.

Если вы используете Debian или Ubuntu, обновите индекс локального пакета и установите git , выполнив следующие команды от имени пользователя sudo:

Чтобы установить пакет git на серверах CentOS, введите:

Затем создайте нового пользователя, который будет управлять репозиториями Git:

Домашний каталог пользователя установлен в /home/git. Все репозитории будут храниться в этом каталоге. Мы не установили пароль для пользователя «git», вход в систему будет возможен только с использованием ключей ssh.

Переключитесь на пользователя «git» с помощью команды su:

Выполните следующие команды, чтобы создать каталог SSH и установить правильные разрешения :

Создайте файл с именем

/.ssh/authorized_keys, который будет содержать ключи SSH авторизованных пользователей:

Вот и все. Настройка сервера завершена. Теперь вы готовы создать свой первый Git-репозиторий.

Запустите следующую команду, чтобы запустить новый пустой репозиторий:

Вы можете назвать каталог, как хотите. Важно создать репозиторий в домашнем каталоге пользователя «git».

Настройка локального Git-репозитория

Чтобы иметь возможность отправлять локальные изменения git на сервер Git, вы должны добавить свой открытый SSH-ключ локального пользователя в файл authorized_keys удаленного пользователя «git» .

Если у вас уже есть пара ключей SSH, созданная в вашей локальной системе, вы можете отобразить открытый ключ, набрав:

Вывод должен выглядеть примерно так:

Если вы получаете сообщение об ошибке: No such file or directory, означающее, что у вас нет пары ключей SSH, созданной на вашем локальном компьютере.

Для создания новой пары ключей SSH используйте следующую команду:

Скопируйте вывод catкоманды выше и вернитесь в консоль Git-сервера.

На сервере откройте текстовый редактор и вставьте в файл

/.ssh/authorized_keys открытый ключ, скопированный с локального компьютера:

Весь текст открытого ключа должен быть в одной строке.

Мы предполагаем, что пакет Git уже установлен на вашем локальном компьютере. Если нет, установите его так же, как описано в предыдущих разделах.

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

Инициализировать репозиторий git:

Последний шаг – добавить git remote в ваш локальный репозиторий:

Не забудьте заменить git_server_ip на ваше имя хоста Git-сервера или IP-адрес.

Чтобы убедиться, что все настроено правильно, создайте тестовый файл :

Добавьте изменения в область подготовки:

Перенесите изменения локального репозитория в удаленный репозиторий:

Если все настроено правильно, вывод должен выглядеть примерно так:

Чтобы добавить нового соавтора, просто скопируйте его открытый SSH-ключ в файл

/.ssh/authorized_keys пользователя «git» .

Вы можете использовать те же шаги для создания новых репозиториев. Важно отметить, что удаленный репозиторий должен существовать до того, как вы добавите git remote в свой локальный репозиторий.

Заключение

В этой статье мы показали, как настроить свой собственный Git-сервер и создать репозитории.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Оцените статью