ایجاد کلید‌ SSH در Ubuntu برای زندگی راحت‌تر!

how to setup ssh in ubuntu

امر SSH زدن به سرور فی نفسه کار ساده‌ایه:
کافیه ترمینال رو باز کنیم و  ssh username@remote_host

صدالبته جای username نام کاربری خودمون رو در سیستمی که می‌خوایم به اون SSH بزنیم جایگزین می‌کنیم و به جای remote_host آدرس سرور رو می‌ذاریم،‌ کلید Enter رو که بزنیم، ازمون رمز سرور رو می‌خواد، اون رو هم بهش می‌گیم و تمام. راحت مثل آب خوردن!

ولی دوتا مشکلی داریم این وسط: اول اینکه آدرسی که می‌خوایم بهش SSH بزنیم معمولا یک IPست ینگه دنیا. مثلا 51.178.11.24 می‌شه آدرس سرور ما و اگر ۳−۴ تا سرور داشته باشیم خیلی هنرمندی می‌خواد که بتونیم آدرس تک تک اون‌ها رو حفظ کنیم و یادمون بیاد کی کدومه. مشکل بعدی؟ اگر احمق نباشیم رمزی که برای سرور انتخاب کردیم رو یک چیز سخت گذاشتیم، مثلا uV82Hi*KX^L4Ae، حالا بهتر شد نه؟ ۳ تا سرور داریم که نه تنها باید یادمون باشه کی به کیه بلکه باید رمز اون‌ها رو هم حفظ کنیم.

اگر این توانایی ابر انسانی رو دارید که همه این‌ها رو حفظ کنید که فبها المراد! این نوشته به در شما نمی‌خوره، ببنید و برید دنیال زندگیتون. ولی اگر می‌خواید یاد بگیرید که چطور برای این سرورها اسم SSH تنبل پسند انتخاب کنیم و یک رمز local برای مواقع SSH زدن بهشون جای اون رمز اصلی بذاریم ادامه‌ی این نوشته برای شماست.

مرحله‌ی ۱- ایجاد زوج کلید‌های SSH:

قبل از اینکه دستور زیر رو کپی کنیم توی ترمینال، جای your_home آدرس دایرکتوری Home سیستم خودمون رو می‌ذاریم، جای xxx هم یک اسم آدمی‌زادی مطابق چیزی که می‌خوایم سرور رو به اون نام صدا بزنیم انتخاب می‌کنیم تا بعدا یادمون بمونه.

ssh-keygen -f your_home/.ssh/id_rsa_xxx

دستور بالا رو که وراد کنیم چنین خروجی رو خواهیم دید:

Output:
Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa_xxx):

وقتی تایید کنیم اگر فایلی از قبل در اون آدرس باشه ازمون می‌پرسه که آیا کلید جدید جایگزین اون بشه یا نه؟

Output:
/home/your_home/.ssh/id_rsa_xxx already exists. Overwrite (y/n)?

مجدا y رو بزنیم خواهد پرسید که می‌خواید برای این کلید یک رمز آدمی‌زادی انتخاب کنید؟

Output:

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

می‌شه این passphrase رو خالی گذاشت که شخصا توصیه نمی‌کنم. پس یک رمز آسون انتخاب کنید. این رمز رو هربار باید وارد کنیم پس آسون باشه لطفا، وگرنه چه کاری بود؟

رمز رو وارد کنیم و کلید Enter رو بزنیم چنین خروجی رو می‌بینیم:

Output:
Your identification has been saved in /home/mucca/.ssh/id_rsa_svet_xxx. Your public key has been saved in /your_home/.ssh/id_rsa_xxx.pub. The key fingerprint is: SHA256:EotycevKz2a0jID/r52daE57vz8yETJAAW5Y4uTInEk mucca@mucca The key's randomart image is: +---[RSA 3072]----+ | .E.. o+o | | O.o .oo | | .B . +. | | . .+.++ . | | o..o.+.S+ . | | . oo ... o | | . o +.. o | | ..o+=.. + . | | .=BBo +.. | +----[SHA256]-----+

خب تبریک می‌گم یک زوج کلید SSH ساختیم و در آدرسی که گفته بودیم ذخیره کردیم.

مرحله ۲- کپی کردن کلید عمومی در سرور:

در الگوی دستوری زیر نام کاربری سرور رو جایگزین username و آدرس اون رو جایگزین remote_host می‌کنیم و در ترمینتال دستور رو وارد می‌کنیم.

ssh-copy-id -i /your_home/.ssh/id_rsa_xxx username@remote_host

کلید Enter رو که بزنیم اگر برای اولین باره که می‌خوایم به اون سرور وصل بشیم چنین خروجی از خواهیم دید:

Output:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/your_home/.ssh/id_rsa_svet.pub" The authenticity of host 'your_host (your_host)' can't be established. ECDSA key fingerprint is SHA256:RUvbWAuBFlx0sTbfmNsfweWEET54887aUCBZy2SKVfw. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

وقتی yes رو تایپ کنیم. چنین خروجی‌از رو خواهیم دید و از ما که پسور سرور رو می‌خواهد:

Output:
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys your_name@your_host's password:

پسور رو که وراد کنیم کلید عمومی ما کپی خواهد شد به آدرس authorized_keysدر پوشه‌‌ی ~/.sshسرور، طبیعتا اگر این فایل رو از روی سرور پاک کنیم دسترسی‌ای که ایجاد کردیم از بین می‌رود.

Output:
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@51.178.218.116'" and check to make sure that only the key(s) you wanted were added.

مرحله ۲و نیم- همه‌چیز درسته؟

اگر همه‌ی مراحل بالا با موفقیت انجام شده باشه دستور ssh username@remote_hostرو بزنیم با وارد کردن اون پسورد آدمیزادی‌ای که گفتیم می‌تونیم وارد سرور شیم.

بار اولی که می‌خوایم از این کلیدی که ساخیتم استفاده کنیم Ubuntu مهربان ازمون می‌پرسه که ای تنبل روزگار می‌خواید همین رمز آسونه رو هم براتون حفظ کنم؟ اگر سیستم شخصیه و کس دیگه‌ای دسترسی بهش نداره و این‌ها: آره چرا که نه؟:)

save ssh pass ubuntu

محله ۳- انتخاب نام مناسب برای SSH زدن:

تا اینجای کار مشکل حفظ کردن رمز سخت رو حل کردیم، برای انتخاب نام  local موقع SSH زدن به سرورمون فایل ~/.ssh/config رو باید ویرایش کنیم. با یک ادیتور مثل nano اون رو باز می‌کنیم.
یا احتمالا یک فایل خالی خواهید دید یا تنطیمات قبلی شما اونجاست. در هر صورت به ازای هر سرور و کلید عمومی‌ای که داریم مطابق الگوی زیر اطلاعات خودمون رو وارد می‌کنیم:

Host my_server_name
    HostName example.com
    User bob
    IdentityFile ~/.ssh/id_rsa_xxx


فایل رو ذخیره می‌کنیم. حالا کافیه تایپ کنیم ssh my_server_name و قدرت خدا وارد سرور می‌شیم.

 


منابع:

How to Set Up SSH Keys on Ubuntu 18.04

Setting up SSH to Manage Connections to Multiple Hosts

How to create ssh keys and manage multiple keys

ssh-keygen – Generate a New SSH Key

ویسنده: محمد حسین سالاری.

You may also like

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *