Repository navigation
Expand file tree
/
Copy pathsetting-up-server.asc
More file actions
124 lines (101 loc) · 7.68 KB
/
Copy pathsetting-up-server.asc
File metadata and controls
124 lines (101 loc) · 7.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
[[_setting_up_server]]
=== Поставување на серверот
Ајде да одиме преку поставување SSH пристап на страната на серверот.
Во овој пример, ќе го користите методот `authorized_keys` за автентикација на вашите корисници.
Ние, исто така, претпоставуваме дека ја воведувате стандардната дистрибуција на Linux како Ubuntu.
[NOTE]
====
Голем дел од она што е опишано овде може да се автоматизира со користење на командата `ssh-copy-id`, наместо рачно да се копираат и инсталираат јавни клучеви.
====
Прво, ќе креирате `git` корисник и` .ssh` директориум за тој корисник.
[source,console]
----
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
----
Следно, треба да додадете некои јавни клучеви за програмери SSH до датотеката `authorized_keys` за` git` корисникот.
Да претпоставиме дека имате доверливи јавни клучеви и сте ги зачувале во привремени датотеки.
Повторно, јавните клучеви изгледаат вака:
[source,console]
----
$ 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` директориум:
[source,console]
----
$ 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` опцијата, која иницијализира складиштето без работен директориум:(((git commands, init, bare)))
[source,console]
----
$ 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` е постоечки проект со датотеки во него):
[source,console]
----
# 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
----
Во овој момент, другите можат да го клонираат и притискаат промени исто толку лесно:
[source,console]
----
$ 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` ако не е веќе таму:
[source,console]
----
$ 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>`:
[source,console]
----
$ sudo chsh git -s $(which git-shell)
----
Сега, `git` корисникот може само да ја користи SSH-поврзувањето за да ги притисне и повлече Git репозиториите и не може да го исфрли на машината.
Ако се обидете, ќе видите одбивање на најава вака:
[source,console]
----
$ 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` за повеќе информации за прилагодување на школка.(((git commands, help)))