SSH Keys چیست ؟
برخلاف روش استفاده از پسورد، کرک کردن ssh key با روش Brute Force تقریبا غیر ممکن است. Key pair دو متن یا string طولانی ایجاد میکند:
یکی کلید Public یا عمومی و دیگری کلید Private یا خصوصی که هردو برای اتصال به سرور مورد نیاز خواهد بود. کلید public را میتوانید بر روی سرور های خود قرار داده و با SSH Client که کلید Private را دارد به انها متصل شوید، زمانی که کلید ها با یکدیگر Match باشند اتصال بدون درخواست پسوورد برقرار خواهد شد. برای افزایش امنیت حتی میتوانید درخواست پسوورد را نیز برای اتصال فعال نمایید. در این آموزش جامع، به بررسی دقیق و مرحلهبهمرحله نحوه ساخت، تنظیم و استفاده از کلیدهای SSH در سیستمعامل لینوکس میپردازیم.
چرا استفاده از کلید SSH به جای رمز عبور بهتر است؟
استفاده از کلیدهای SSH به جای رمز عبور، سطح امنیت اتصال به سرور را چند برابر افزایش میدهد. برخلاف رمز عبور، که میتواند با حمله Brute Force کرک شود، کلیدهای SSH بهشدت رمزنگاری شده و کرک کردن آنها عملاً غیرممکن است. در این روش، از یک جفت کلید عمومی (Public Key) و خصوصی (Private Key) استفاده میشود.
مزایای استفاده از کلید SSH
- افزایش امنیت در اتصال به سرورهای لینوکسی
- حذف نیاز به وارد کردن رمز عبور در هر اتصال
- مناسب برای اتوماسیون و اسکریپتنویسی
- جلوگیری از دسترسی غیرمجاز در صورت تنظیم درست
روشهای اتصال به SSH
- اتصال با رمز عبور (Password-based Authentication)
- اتصال با کلیدهای SSH (SSH Key-based Authentication) – پیشنهاد شده برای سرورهای اختصاصی، ابری و VPS
مراحل ساخت و تنظیم کلیدهای SSH در لینوکس
مرحله اول: ایجاد کلید SSH با استفاده از ssh-keygen
در ترمینال لینوکس، دستور زیر را وارد کنید:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- -t rsa: نوع کلید را RSA تعیین میکند.
- -b 4096: طول کلید را 4096 بیت تنظیم میکند (امنتر از 2048 بیت).
- -C: برای اضافه کردن یک برچسب به کلید (اختیاری)
مرحله دوم: ذخیره کلیدها و انتخاب Passphrase
پس از اجرای دستور بالا، سیستم چند سوال از شما میپرسد:
- مسیر ذخیره کلید (پیشفرض: /home/user/.ssh/id_rsa)
- تعیین یک Passphrase (عبارت عبور دوم)
- وارد کردن Passphrase توصیه میشود. در صورت عدم تمایل میتوانید Enter بزنید.
در پایان این مرحله:
- کلید عمومی:
/home/user/.ssh/id_rsa.pub
- کلید خصوصی:
/home/user/.ssh/id_rsa
مرحله سوم: کپی کردن کلید عمومی روی سرور مقصد
از یکی از دو روش زیر استفاده کنید:
روش ۱: استفاده از ssh-copy-id
ssh-copy-id user@server_ip_address
روش ۲: انتقال دستی کلید عمومی
cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
نکته امنیتی: حتماً سطح دسترسی فایل authorized_keys را روی 600 و پوشه .ssh را روی 700 تنظیم کنید:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
مرحله چهارم: غیرفعالسازی ورود با رمز عبور (اختیاری اما توصیهشده)
برای افزایش امنیت، ورود با رمز عبور را غیرفعال کنید:
- ویرایش فایل کانفیگ sshd:
sudo nano /etc/ssh/sshd_config
- تنظیمات زیر را اعمال یا اصلاح کنید:
PasswordAuthentication no
PermitRootLogin prohibit-password
- ذخیره و خروج، سپس ریاستارت سرویس SSH:
sudo systemctl restart sshd
نکات مهم برای افزایش امنیت اتصال SSH
اقدام امنیتی | توضیح |
---|---|
استفاده از Passphrase | حتی در صورت لو رفتن کلید خصوصی، دسترسی غیرممکن خواهد بود. |
محدود کردن IPهای مجاز | فقط به IPهای مشخص اجازه اتصال بدهید. |
استفاده از پورت غیر پیشفرض | پورت 22 را تغییر دهید تا از حملات رایج جلوگیری شود. |
استفاده از فایروال و fail2ban | برای مسدودسازی IPهای مشکوک بسیار مفید هستند. |
بررسی لاگها و مانیتورینگ | فعالیتهای SSH را بهطور منظم بررسی کنید. |