2021-07-16 19:41:21
4.4 گیت روی سرور - نصب و راهاندازی سرور
نصب و راهاندازی سرور
اجازه دهید تا گام به گام به راهاندازی دسترسی SSH روی سرور بپردازیم. در این مثال شما از متد authorized_keys برای تصدیق هویت کاربرانتان استفاده خواهید کرد. همچنین ما فرض میکنیم که از یک توزیع استاندارد لینوکس مانند اوبونتو استفاده میکنید.
یادداشت به جای کپی و نصب دستی کلیدهای عمومی، بخش اعظمی از چیزهایی که در اینجا در اینجا توضیح داده شدهاند را میتواند با دستور 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 در پوشه .ssh کاربر git اضافه میکنید:
$ 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/
سپس، John، Josie یا Jessica میتوانند با افزودن آن به عنوان یک ریموت و ارائه یک برنچ، اولین نسخه از پروژه خود را به آن مخزن پوش کنند. توجه داشته باشید که هر زمان بخواهید پروژه جدیدی بسازید حتماً شخصی باید به شل آن سیستم وصل شود و یک مخزن بِر بسازد. حالا بیایید از gitserver به عنوان نام هاست (Hostname) سروری که روی آن مخزن و کاربر 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 README file'
$ git push origin master
بدین طریق شما سریعاً میتوانید سرور گیتی با قابلیت خواندن/نوشتن راهاندازی کنید و آن در اختیار توسعهدهندگان قرار دهید.
باید به این نکته توجه کنید که در حال حاضر تمامی کاربران میتوانند به داخل سرور ورود کنند و به عنوان کاربر git یک شل در دست بگیرند. اگر میخواهید از این موضوع جلوگیری کنید، میبایست شل را در داخل /etc/passwd به چیز دیگری تغییر دهید.
شما به سادگی میتوانید حساب کاربر git را فقط به فعالیتهای مربوط به گیت و با ابزار شل محدودی به نام git-shell که با گیت میآید محدود کنید. اگر شما این ابزار را به عنوان شل ورودی حساب کاربری git تنظیم کنید، آن حساب کاربری نمیتواند دسترسی شل معمولی به سرور شما داشته باشد. برای انجام این کار، باید ابتدا مسیر کامل دستور 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 -e /etc/shells # and add the path to git-shell from last command
حالا میتوانید با استفاده از chsh
-s شل هر کاربر را تغییر دهید:
$ sudo chsh git -s $(which git-shell)
اکنون کاربر git همچنان میتواند از SSH برای پوش و پول از مخازن گیت استفاده کند اما نمیتواند به شل دستگاه وصل شود. اگر یکبار امتحان کنید، پیغام رد درخواستی مانند پیغام پایین را مشاهده خواهید کرد:
$ ssh git@gitserver
212 viewsAlireza, 16:41