پروتکل ssh یا secure shell چیه؟ تعریف ویکی پدیا:
پوسته امن (به انگلیسی: Secure Shell) یا به اختصار اساساچ (به انگلیسی: SSH) یک پروتکل اینترنتی است که امکان تبادل اطلاعات با استفاده از یک کانال امن را بین دو دستگاه متصل در شبکه ایجاد میکند.
برای اتصال به ssh باید اول احراز هویت بشید. احراز هویت به چند شکل ممکنه اتفاق بیوفته که پیش فرض اون با یوزرنیم و پسورد هستش و البته نوع های دیگه ای مثل احراز هویت با Public Key هم وجود داره.
احراز هویت با Public Key چند مزیت خیلی خوب داره که به اختصار اشاره میکنم:
در ادامه میخوام احراز هویت با استفاده از Public Key رو آموزش بدم.
کلید SSH به صورتی جفتی ساخته و به صورت متنی در فایل ذخیره میشه. جفت کلید SSH شامل دو کلیده:
اگر سایت یا سروری SSH Key شما رو درخواست کرد منظور Public Key یا کلید عمومی (id_rsa.pub) هستش. برای مثال سرویس هایی مثل GitHub و GitLab ممکنه کلید عمومی شما رو لازم داشته باشن تا شما بدون وارد کردن یوزرنیم و پسورد بتونید عملیاتی مثل git push رو انجام بدید.
برای ساختن یک جفت کلید SSH مراحل زیر را به ترتیب انجام بدید:
1. ساخت کلید جدید:
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
در این دستور -t نوع کلید، -b تعداد بیت کلید و -C کامنت کلید را مشخص میکنه.
2. در این مرحله کلید Enter رو فشار بدید تا کلید در فایل های پیشفرض id_rsa
و id_rsa.pub
در پوشه /home/your_username/.ssh
ذخیره شود:
3. در مرحله بعد از شما خواسته میشه که برای رمزنگاری کلید خصوصی، یک پسورد وارد کنید. این به این معنیه که همیشه برای استفاده از کلید تون باید پسورد رو وارد کنید. برای این آموزش پیشنهاد میکنم که پسورد وارد نکنید و اون رو خالی رها کنید و Enter را فشار بدید.
الان باید جفت کلید شما در آدرس/home/your_username/.ssh
ذخیره شده باشه.
برای بارگذاری کلید عموم تون در سرور چند راه وجود داره:
کامند ssh-copy-id
در بسیاری از سیستم عامل ها وجود داره. با استفاده از این کامند میتونید کلید عمومی تون رو در راحت ترین حالت ممکنه روی سرور بارگذاری کنید:
1. کامند زیر رو وارد کنید، دقت کنید که یوزرنیم و آی پی سروری که میخواید بهش دسترسی پیدا کنید رو باید جایگذاری کنید:
$ ssh-copy-id your_username@192.0.0.2
2. سپس پسورد سرور رو وارد کنید و Enter رو بزنید.
3. الان چک کنید که بدون پسورد میتونید وارد سرور بشید:
$ ssh your_username@192.0.0.2
کامند scp
یک کامند بسیار پر استفاده و کاربردی برای کپی کردن فایل بین ماشین ها بر اساس ssh هستش.
1. اول با ssh به سرور خودتون وصل بشید:
$ ssh your_username@192.0.0.2
2. بعد پوشه ~/.ssh
و فایل authorized_keys
رو در صورتی که وجود ندارند بسازید:
mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys
3. بعد سطح دسترسی اون ها رو تنظیم کنید:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
4. حالا یک ترمینال دیگه باز کنید و با استفاده از دستور scp
کلید عمومی ساخته شده (id_rsa.pub
) رو به فایل authorized_keys
در سرور منتقل کنید (جایگزاری یوزرنیم و آی پی سرور هدف فراموش نشه) :
scp ~/.ssh/id_rsa.pub your_username@192.0.0.2:~/.ssh/authorized_keys
5. الان چک کنید که بدون پسورد میتونید وارد سرور بشید:
$ ssh your_username@192.0.0.2
شما حتی میتونید این کار رو به صورت دستی هم انجام بدید:
1. ابتدا محتوی کلید عمومی تون رو در ترمینال چاپ کنید:
cat ~/.ssh/id_rsa.pub
2. بعد از این که محتویات اون داخل ترمینال نشون داده شد با کرسور موس اون رو بگیرید و کپی کنید. سپس وارد سرور تون بشید:
$ ssh your_username@192.0.0.2
3. بعد پوشه ~/.ssh
و فایل authorized_keys
رو در صورتی که وجود ندارند بسازید:
mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys
4. بعد سطح دسترسی اون ها رو تنظیم کنید:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
5. حالا فایل authorized_keys
رو با یک تکست ادیتور مثل nano یا vim باز کنید و کلید عمومی کپی شده رو به انتها این فایل اضافه کنید و فایل رو ذخیره کنید.
6. الان چک کنید که بدون پسورد میتونید وارد سرور بشید:
$ ssh your_username@192.0.0.2
امیدوارم که این آموزش بهتون کمک کرده باشه. اگر فکر میکنید آموزش مفیدی بوده لینک رو با بقیه دوستاتون به اشتراک بزارید. در صورتی که به مشکلی برخوردید همینجا کامنت بزارید یا از طریق ایمیل مشکل تون رو مطرح کنید. منم خوشحال میشم بیشتر همدیگه رو بشناسیم :)