آموزش ساخت SSH Key در لینوکس
راهنمای گامبهگام افزایش امنیت اتصال به سرور
مقدمه
SSH یا Secure Shell یک پروتکل رمزنگاریشده برای مدیریت و ارتباط امن با سرورها است. در اغلب سناریوهای مدیریت سرور لینوکسی، بخش زیادی از زمان مدیر سیستم در ترمینال و از طریق اتصال SSH سپری میشود.
روشهای مختلفی برای احراز هویت در SSH وجود دارد، اما استفاده از SSH Key امنترین و حرفهایترین روش محسوب میشود. به همین دلیل، این روش بهعنوان استاندارد پیشنهادی برای تمام کاربران و مدیران سرور توصیه میشود.
در این آموزش از دیدگاه، نحوه ساخت، انتقال و استفاده از کلید SSH در لینوکس را بهصورت مرحلهبهمرحله بررسی میکنیم و در انتها، تنظیمات امنیتی تکمیلی را نیز توضیح میدهیم.
SSH Key چگونه کار میکند؟
در SSH میتوان از روشهای مختلفی برای احراز هویت استفاده کرد. سادهترین روش، ورود با رمز عبور است؛ اما این روش در برابر حملات brute-force و اسکریپتهای خودکار آسیبپذیر است.
SSH Key جایگزینی امنتر برای رمز عبور است و بر پایه رمزنگاری نامتقارن کار میکند.
ساختار SSH Key
هر SSH Key شامل دو بخش است:
-
کلید خصوصی (Private Key)
روی سیستم کاربر باقی میماند و باید کاملا محرمانه نگهداری شود. -
کلید عمومی (Public Key)
روی سرور قرار میگیرد و اشتراکگذاری آن خطری ندارد.
سرور هنگام اتصال، بررسی میکند که کلاینت مالک کلید خصوصی متناظر با کلید عمومی ثبتشده هست یا نه. در صورت تایید، اتصال برقرار میشود.
مزایای استفاده از SSH Key
-
حذف نیاز به وارد کردن رمز عبور
-
مقاومت بالا در برابر brute-force
-
عدم ارسال کلید خصوصی در شبکه
-
امکان رمزگذاری کلید با passphrase
-
مناسب برای اسکریپتها و اتوماسیون
مرحله اول: ساخت SSH Key در لینوکس
برای ایجاد کلید SSH، از ابزار
ssh-keygen
اجرای دستور ساخت کلید
ssh-keygenخروجی اولیه به شکل زیر است:
Enter file in which to save the key (/home/username/.ssh/id_rsa):اگر مسیر پیشفرض را تأیید کنید، فایلها در این مسیر ایجاد میشوند:
-
کلید خصوصی:
~/.ssh/id_rsa
کلید عمومی:
~/.ssh/id_rsa.pub
پیشنهاد میشود مسیر پیشفرض را تغییر ندهید.
انتخاب Passphrase
در ادامه، از شما درخواست میشود یک passphrase برای کلید خصوصی تعیین کنید:
Enter passphrase (empty for no passphrase):استفاده از passphrase اختیاری است اما بهشدت توصیه میشود، زیرا:
-
کلید خصوصی روی دیسک رمزگذاری میشود
-
در صورت سرقت فایل، استفاده از آن دشوارتر میشود
-
یک لایه امنیتی اضافی ایجاد میکند
در صورت عدم تمایل، میتوانید این مرحله را با Enter رد کنید.
پایان ساخت کلید
پس از اتمام، پیام مشابه زیر نمایش داده میشود:
Your identification has been saved in ~/.ssh/id_rsa
Your public key has been saved in ~/.ssh/id_rsa.pubدر این مرحله، جفت کلید شما آماده استفاده است.
مرحله دوم: انتقال کلید عمومی به سرور
برای استفاده از SSH Key، باید کلید عمومی روی سرور مقصد قرار بگیرد. این کار به چند روش قابل انجام است.
روش اول: استفاده از ssh-copy-id (پیشنهادی)
سادهترین روش، استفاده از ابزار
ssh-copy-id
ssh-copy-id username@remote_hostپس از وارد کردن رمز عبور کاربر روی سرور، کلید عمومی شما به فایل زیر اضافه میشود:
~/.ssh/authorized_keysروش دوم: انتقال کلید با SSH
اگر ssh-copy-id در دسترس نبود:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"این دستور:
-
پوشه
.ssh
کلید را به انتهای فایل authorized_keys اضافه میکند
روش سوم: انتقال دستی کلید
-
نمایش کلید عمومی روی سیستم محلی:
cat ~/.ssh/id_rsa.pub-
ورود به سرور
-
ایجاد پوشه ssh:
mkdir -p ~/.ssh-
افزودن کلید به authorized_keys:
echo "public_key_string" >> ~/.ssh/authorized_keysمرحله سوم: اتصال به سرور با SSH Key
پس از انتقال موفق کلید:
ssh username@remote_hostدر صورتی که passphrase تعریف کرده باشید، از شما درخواست میشود آن را وارد کنید. اگر همه چیز درست باشد، بدون نیاز به رمز عبور وارد سرور میشوید.
مرحله چهارم: غیرفعال کردن ورود با رمز عبور
برای افزایش امنیت، پس از اطمینان از عملکرد SSH Key، بهتر است ورود با رمز عبور را غیرفعال کنید.
ویرایش تنظیمات SSH
sudo nano /etc/ssh/sshd_configخط زیر را پیدا کرده و مقدار آن را تغییر دهید:
PasswordAuthentication noسپس سرویس SSH را ریستارت کنید:
sudo systemctl restart sshاز این پس، فقط ورود با SSH Key امکانپذیر خواهد بود.
استفاده از HSM برای نگهداری SSH Key
ماژولهای امنیتی سختافزاری (HSM) امکان ذخیره کلید خصوصی در سختافزار امن را فراهم میکنند.
مزایای HSM
-
کلید خصوصی هرگز از سختافزار خارج نمیشود
-
محافظت در برابر سرقت فایل
-
مناسب محیطهای حساس و سازمانی
استفاده از HSM با SSH
نمونه تولید کلید روی HSM:
ssh-keygen -D /usr/lib/opensc-pkcs11.so -s user-hsm-keyپرسشهای متداول
SSH Key چیست؟
روشی امن برای احراز هویت در SSH که جایگزین رمز عبور میشود.
کلید خصوصی کجا ذخیره میشود؟
در مسیر
~/.ssh/
بهترین نوع کلید SSH چیست؟
Ed25519 یا RSA با طول حداقل 4096 بیت.
چگونه ورود با رمز عبور را غیرفعال کنیم؟
با تنظیم
PasswordAuthentication nosshd_config
جمعبندی
استفاده از SSH Key یکی از مهمترین اقدامات امنیتی در مدیریت سرورهای لینوکسی است. با اجرای صحیح این مراحل، هم امنیت سرور افزایش مییابد و هم فرآیند ورود سریعتر و حرفهایتر میشود.
برای آشنایی کامل با تمام قابلیتهای SSH از جمله تونلسازی و SSH Agent، راهنمای جامع SSH را مطالعه کنید. کاربران CentOS نیز میتوانند از راهنمای اختصاصی SSH Key در CentOS 8 استفاده کنند.
این راهنما توسط دیدگاه برای مدیران سیستم، توسعهدهندگان و کاربران حرفهای لینوکس تهیه شده است.
