رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش ساخت SSH Key در لینوکس

آموزش ساخت SSH Key در لینوکس

SSH Key روشی امن برای ورود به سرورهای لینوکسی است که جایگزین رمز عبور می‌شود و بر پایه رمزنگاری نامتقارن کار می‌کند. با ساخت کلید خصوصی و عمومی، انتقال کلید عمومی به سرور و غیرفعال کردن ورود با رمز عبور، اتصال امن و سریع برقرار می‌شود. این روش امنیت سرور را بالا می‌برد و برای اتوماسیون و مدیریت حرفه‌ای سرورها ضروری است.

آموزش ساخت 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 استفاده می‌شود که به‌صورت پیش‌فرض در مجموعه OpenSSH وجود دارد.

اجرای دستور ساخت کلید

 
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 اضافه می‌کند


روش سوم: انتقال دستی کلید

  1. نمایش کلید عمومی روی سیستم محلی:

 
cat ~/.ssh/id_rsa.pub
  1. ورود به سرور

  2. ایجاد پوشه ssh:

 
mkdir -p ~/.ssh
  1. افزودن کلید به 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 no در فایل sshd_config.


جمع‌بندی

استفاده از SSH Key یکی از مهم‌ترین اقدامات امنیتی در مدیریت سرورهای لینوکسی است. با اجرای صحیح این مراحل، هم امنیت سرور افزایش می‌یابد و هم فرآیند ورود سریع‌تر و حرفه‌ای‌تر می‌شود.

این راهنما توسط دیدگاه برای مدیران سیستم، توسعه‌دهندگان و کاربران حرفه‌ای لینوکس تهیه شده است.