پیکربندی SSH برای کار با انباره‌های Git  و Mercurial در bitbucket.org بدون وارد کردن رمز عبور

برای برقراری ارتباط با repository معمولا از پروتکل امن https استفاده می‌شود. هنگام احراز هویت برای برقراری ارتباط باید هر بار نام کاربری و کلمه عبور را وارد کنید. می‌توانید نام کاربری را در فایل تنظیمات سرارسی DVCS وارد کنید، اما هنوز باید رمز عبور خود را هر بار وارد کنید. ممکن است در روز حین کار کردن روی پروژه بخواهید ده‌ها بار با انباره در ارتباط باشید، در این حالت باید بارها و بارها کلمه عبور خود را وارد کنید که کار سخت و وقت گیری است. در این مطلب راه برقراری این ارتباط  از طریق SSH را مورد بررسی قرار می‌دهیم تا از وارد کردن کلمه عبور جلوگیری کنیم.

 گام اول: آشنایی با مفهوم هویت در SSH

هنگام استفاده از SSH برای کار با انباره باید احراز هویت (SSH identity) کنید. این هویت شامل یک کلید خصوصی (private key) و یک کلید عمومی (public key) است، به این دو کلید با هم زوج کلید (key pair) گفته می‌شود. کلید خصوصی روی سیستم شما (local computer) و کلید عمومی روی سرور انباره (remote server) بارگذاری می‌شود. بعد از انجام این مراحل می‌توانید از طریق لایه امن SSH با سرور در ارتباط باشید.

قبل از ادامه چند مورد را در نظر بگیرید:

  • می‌توانید چند زوج کلید تعریف کنید و کلید عمومی‌های آنها را به سرور معرفی کنید. یکی از کاربردهای آن هنگامی است که از چند سیستم به یک انباره متصل می‌شوید. به عنوان مثال یک زوج کلید مربوط به سیستم محل کار شما و یک زوج کلید دیگر مربوط به سیستم شما در خانه است.
  • RSA (اول نام طراحان الگوریتم R. Rivest, A. Shamir, L. Adleman) و DSA          (سرواژه های digital signature algorithm) الگوریتم های رمزنگاری کلیدها هستند.

گام دوم: بررسی کنید رکورد احراز هویت پیش فرضی وجود دارد؟

ابتدا بررسی کنید کلاینت SSH روی سیستم شما نصب باشد. برای اینکار در خط فرمان دستور زیر را وارد کنید.

ssh -v

اگر SSH نصب نبود، ابتدا ان را نصب کنید. سپس محتوای مسیر .ssh در مسیر خانه کاربر جاری را بررسی کنید.

C:\Users\mohamadaliakbari\.ssh>ls
config  environment  id_rsa  id_rsa.pub  known_hosts

اگر دو فایل با ابتدای نام id_ وجود داشت، این فایل ها مربوط به احراز هویت پیش فرض است. در غیر این صورت گام بعدی را برای ایجاد آنها طی کنید.

گام سوم: ایجاد احراز هویت پیش فرض

به صورت پیش فرض همه فایل های احراز هویت در مسیر /Users/yourname/.ssh قرار می‌گیرد. برای ایجاد یک زوج کلید مراحل زیر را طی کنید.

  • خط فرمان را باز کنید
  • دستور ssh-keygen را وارد کنید.
  • مسیر پیش فرض را تایید کنید و مراحل را تا انتها طی کنید.
  • در مرحله ورود passphrase یک کلمه عبور برای کلید خود انتخاب کنید.
  • در نهایت مسیر /Users/yourname/.ssh را بررسی کنید که شامل دو فایل id_rsa و  id_rsa.pub باشد.

خلاصه مراحل به صورت زیر است.

C:\Users\mohamadaliakbari>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/cygdrive/c/Users/mohamadaliakbari/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /cygdrive/c/Users/mohamadaliakbari/.ssh/id_rsa.
Your public key has been saved in /cygdrive/c/Users/mohamadaliakbari/.ssh/id_rsa.pub.
The key fingerprint is:
f2:8e:02:d1:df:db:41:7f:47:18:fb:a8:6a:0c:27:b8 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|              .  |
|   .           + |
|  . .     .   o .|
|   . ..oS. .   + |
|  .   oo+ o . o o|
|   .   ..B . o . |
|    . Eo. + .    |
|     .. ....     |
+-----------------+

گام چهارم: ایجاد فایل تنظیمات SSH

ابتدا در مسیر /Users/yourname/.ssh یک فایل با نام config بسازید. سپس برای سرور انباره مورد نظر خود تنظیمات زیر را وارد کنید.

// File path: /Users/yourname/.ssh/config
Host bitbucket.org
 IdentityFile ~/.ssh/privatekeyfile

یک فاصله (Space) در خط دوم مهم است. همچنین منظور از privatekeyfile نام فایل کلید خصوصی است که در گام قبلی ساختیم (فایل id_rsa). بنابراین تنظیمات نهایی به  صورت زیر است:

Host bitbucket.org
 IdentityFile ~/.ssh/id_rsa

بعد از ذخیره کردن فایل config خط فرمان را راه اندازی مجدد کنید.

گام پنجم: به روزرسانی فایل .bashrc

برای راه اندازی خودکار عامل (ssh agent) فایل .bashrc را در مسیر خانه کاربر بسازید. سپس دستورات زیر را در آن قرار دهید.

// File path: /Users/yourname/.bashrc
SSH_ENV=$HOME/.ssh/environment
   # start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}
   
if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

خط فرمان GitBash را راه اندازی مجدد کنید. در اولین راه اندازی passphrase از شما پرسیده می‌شود. جزئیات این اسکریپت را از اینجا بخوانید.

گام ششم:بارگذاری کلید عمومی بر روی سرور انباره

بعد از ورود به شناسه کاربری خود، وارد Manage Account شده و از قسمت SSH keys بر روی گزینه Add key کلیک کرده و محتوای کلید عمومی را در فیلد key وارد کنید.  مقدار label به عنوان مثال نام مکان یکی از سیستم های من است.

در نهایت برای تایید صحت انجام مراحل فوق، امکان برقراری ارتباط امن با سرور bitbucket را مورد بررسی قرار دهید.

[email protected] ~
$ ssh -T [email protected]
The authenticity of host 'bitbucket.org (131.103.20.167)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:xx:xx:xx:xx:xx:xx:xx:xx:xx:74:7c:40.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'bitbucket.org,131.103.20.167' (RSA) to the list of k
nown hosts.
logged in as mohamadaliakbari.

You can use git or hg to connect to Bitbucket. Shell access is disabled.

گام هفتم: پیکربندی انباره برای کا با SSH

آدرس انباره با دو پروتکل ssh و https وجود دارد. برای استفاده از ssh فایل .git/config داخل هر انباره را ویرایش کنید و آدرس با پروتکل ssh را وارد کنید.

[remote "origin"]
        url = ssh://[email protected]/mohamadaliakbari/naar.ir.git
        fetch = +refs/heads/*:refs/remotes/origin/*

گام هشتم: با روش جدید بدون وارد کردن رمز عبور با انباره کار کنید

در فایل های انباره تغییری ایجاد کنید، ان را commit کرده و بعد از ان به سرور push کنید.

git commit -m "making a change under the SSH protocol"
git push origin master

 

دیدگاه‌ها

تصویر نیلوفر بهرامی

نیلوفر بهرامی

تشکر به خاطر پست عالیتون به نظر من گام هفتم یکم گنگه
اگر تفاوت بین دو نوع آدرس اینجا توضیح داده بشه ممنون میشم
مثلا
فرمت ssh .... :
ssh://[email protected]/mohamadaliakbari/naar.ir.git

فرمت https .....
https://[email protected]/mohamadaliakbari/naar.ir.git

تصویر محمدعلی اکبری

محمدعلی اکبری
فرمت SSH
[email protected]:accountname/reponame.git
یا
ssh://[email protected]/accountname/reponame.git
فرمت HTTPS
https://accountname@bitbucket.org/accountname/reponame.git
تصویر سعید قره داغی

سعید قره داغی (تایید نشده)

با سلام و عرض ادباگه سرور مون لینوکس باشه ولی یوزر ها ویندوزی باشن دیگه احتیاجی به CopSSH نیست؟

اصلا این CopSSH برای چی استفاده می کنن؟

بر اساس این لینک
http://git-scm.com/book/en/Git-on-th...-The-Protocols

خودش گفته که از Http پشتیبانی میکنن پس جه دلیلی به SSH هست تو ویندوز

معادل COPSSH ریگان نرم افزاری وجود نداره؟

یه سوال دیگه اگه کلاینت ها ویندوزی باشن شما صلاح میدونین سرور گیت ، لینوکس باشه یا ویندوزی و کدوم راحت تر و بهتره ؟

تصویر abc

abc (تایید نشده)

نحوه نصب ssh چطوری؟

تصویر محمدعلی اکبری

محمدعلی اکبری

اگر روی windows هستید git bash رو نصب کنید: https://git-scm.com/download/win که همراهش هرچی لازمه نصب میشه

اگر روی لینوکس هستید: http://www.cyberciti.biz/faq/how-to-installing-and-using-ssh-client-serv...

افزودن نظر جدید