LINUX

آموزش لینوکس

LINUX

آموزش لینوکس

LINUX

این وبلاگ به بحث پیرامون لینوکس و امنیت و زبان برنامه نویسی تحت لینوکس می پردازد.

طبقه بندی موضوعی

در این بخش قصد دارم علاوه بر اینکه نحوه استفاده از git از راه دور رو به شما آموزش میدم ی راه ساده هم برای نقل و انتقال اطلاعات به شما ارائه کنم و اون هم استفاده از کلید ssh برای برقراری ارتباط هست:

در ابتدا می بایست یک کاربر برای این امر تعریف کنید که من اسمش رو git گذاشتم. بعد از اون باید با این حساب کاربری لاگین کنید و تنظیمات مربوط به ssh رو که برای راحتی استفاده کاربرا قرار داده شده رو انجام بدید:

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


کلید عمومی میتونه به فرمت زیر باشه:

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

با توجه به اینکه الان در دایرکتوری کاربر git هستید و با این کاربر لاگین کردید باید این مقدار رو برای هر کاربری که میخواین به سرور git شما متصل بشه در مسیر زیر کپی کنید:

$ cat id_rsa.pub >> ~/.ssh/authorized_keys


بعد از اینکه این کار رو انجام دادید به مسیر home برید و یک دایرکتوری برای ذخیره سازی پروژه هاتون بسازید. به داخل اون برید و با دستورات زیر یک پروژه ی git رو init کنید:

$ cd /home/git/projects
$ mkdir myproject.git
$ cd myproject.git
$ git init --bare
Initialized empty Git repository in /home/git/projects/myproject.git/


حالا اگر بخوایم یکی از کاربران رو به سرور متصل کنیم تا پروژه اش رو بفرسته و دیگران بتونن از اون استفاده کنن باید به صورت زیر عمل کنیم:

$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/home/git/projects/myproject.git
$ git push origin master


حالا فرض کنیم کاربر دیگه ای میخواد پروژه رو clone کنه ی تغییری رو ایجاد کنه و به سرور بفرسته. باید به صورت زیر عمل کنه:

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


اما با این روش یک مشکل بزرگی وجود داره. اونم اینکه اگر ما کلید عمومی کاربر رو روی سرور بریزیم اون میتون به سرور ssh بزنه و با کلید خودش وارد سرور بشه. باید جلوی این کار رو بگیریم.

ابتدا دستور زیر رو بزنید تا ببینید چه shell هایی روی سیستم شما وجود داره:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen


فرض میکنیم شل هایی که در بالا ملاحظه میکنید روی سیستم شما وجود داشته باشه. از دستور زیر برای اینکه مسیر نصب شده شل مربوط به گیت رو ببینید استفاده کنید:

$ which git-shell
/usr/bin/git-shell


معمولا مقدارش چیزی خواهد بود که در بالا ملاحظه میکنید. حالا فایل مورد نظر رو باز کرده و مقدار شل مربوط به گیت رو به اون اضافه کنید:

$ sudo vim /etc/shells


پس حالا باید خروجی زیر رو داشته باشید‫:

# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
/usr/bin/git-shell


حالا برای‫ ثبت تغییرات دستور زیر رو وارد کنید:

$ sudo chsh git


بعد از این دستور اگر به passwd در شاخه etc رجوع کنید حتما باید برای کاربر git خطی مشابه خط زیر رو داشته باشید(علی الخصوص آخرین بخش که مسیر شل در گیت هست)

git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell


حالا اگر کاربری تصمیم داشته باشه که ارتباط ssh رو برقرار کنه به خطای زیر مواجه میشه:

$ 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.

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی