Git
Chapters ▾ 2nd Edition

4.4 Git на Сервер - Поставување на серверот

Поставување на серверот

Ајде да одиме преку поставување SSH пристап на страната на серверот. Во овој пример, ќе го користите методот authorized_keys за автентикација на вашите корисници. Ние, исто така, претпоставуваме дека ја воведувате стандардната дистрибуција на Linux како Ubuntu.

Note

Голем дел од она што е опишано овде може да се автоматизира со користење на командата ssh-copy-id, наместо рачно да се копираат и инсталираат јавни клучеви.

Прво, ќе креирате git корисник и` .ssh` директориум за тој корисник.

$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

Следно, треба да додадете некои јавни клучеви за програмери SSH до датотеката authorized_keys за` git` корисникот. Да претпоставиме дека имате доверливи јавни клучеви и сте ги зачувале во привремени датотеки. Повторно, јавните клучеви изгледаат вака:

$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair

Вие само ги додавате во датотеката authorized_keys на корисникот` git` во својот .ssh директориум:

$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys

Сега, можете да поставите празен репозиториум за нив со стартување на git init со` --bare` опцијата, која иницијализира складиштето без работен директориум:

$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/

Потоа, Џон, Џози или Џесика може да ја поттикнат првата верзија на нивниот проект во тоа складиште, додавајќи го како далечинско и притискајќи врз гранка. Имајте на ум дека некој мора да се смести на машината и да создаде голи репозиториум секогаш кога сакате да додадете проект. Ајде да го користиме "gitserver" како име на серверот на серверот на кој сте го наместиле вашиот git корисник и складиштето. Ако го работите внатрешно, а вие поставите DNS за gitserver за да укажете на тој сервер, тогаш можете да ги користите командите доста како што е (под претпоставка дека` myproject` е постоечки проект со датотеки во него):

# on John's computer
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/srv/git/project.git
$ git push origin master

Во овој момент, другите можат да го клонираат и притискаат промени исто толку лесно:

$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master

Со овој метод, можете брзо да добиете Git сервер за читање / запишување и да трчате за неколку програмери.

Треба да се напомене дека во моментов сите овие корисници исто така можат да се најават на серверот и да добијат школка како git корисник. Ако сакате да го ограничите тоа, ќе треба да ја смените школка на нешто друго во датотеката passwd.

Можете лесно да го ограничите корисникот git само да ги прави Git активностите со ограничена алатка за школка наречена` git-shell` што доаѓа со Git. Ако го поставите ова како школка за пријавување на корисникот 'git`, тогаш git корисникот не може да има нормален пристап до школка до вашиот сервер. За да го користите ова, наведете git-shell наместо bash или csh за школка за логирање на вашиот корисник. За да го стори тоа, прво мора да додадете git-shell во` / etc / shells` ако не е веќе таму:

$ cat /etc/shells   # see if `git-shell` is already in there.  If not...
$ which git-shell   # make sure git-shell is installed on your system.
$ sudo vim /etc/shells  # and add the path to git-shell from last command

Сега можете да ја уредите школка за корисник кој користи chsh <корисничко име> -s <shell>:

$ sudo chsh git -s $(which git-shell)

Сега, git корисникот може само да ја користи SSH-поврзувањето за да ги притисне и повлече Git репозиториите и не може да го исфрли на машината. Ако се обидете, ќе видите одбивање на најава вака:

$ ssh git@gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed.

Сега Git мрежа командите се уште ќе работат само парична казна, но корисниците нема да можат да добијат школка. Како излез се наведува, исто така можете да поставите директориум во домашниот директориум git на корисникот кој малку ја прилагодува командата` git-shell`. На пример, може да ги ограничите командите на Git што серверот ќе ги прифати или можете да ја прилагодите пораката што корисниците ја гледаат ако се обидат да SSH во таква ситуација. Стартувај git help shell за повеќе информации за прилагодување на школка.