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

آموزش کامل راه‌اندازی SSH Key در اوبونتو

SSH Key ابزاری امن و حرفه‌ای برای ورود بدون رمز عبور به سرورهای لینوکس است که امنیت را بالا برده و حملات brute-force را بی‌اثر می‌کند. با الگوریتم‌های مدرن مثل Ed25519 و استفاده از ssh-agent، اتصال سریع و اتوماسیون CI/CD ممکن می‌شود. راه‌اندازی صحیح کلید SSH شامل ساخت کلید، انتقال کلید عمومی به سرور، تنظیم مجوزها و غیرفعال‌کردن ورود با پسورد و root است.

مقدمه

SSH یا Secure Shell استاندارد اصلی برای مدیریت امن سرورهای راه‌دور در دنیای لینوکس است. اولین و مهم‌ترین مرحله هنگام اتصال به یک سرور، احراز هویت است. اگرچه ورود با رمز عبور هنوز رایج است، اما در برابر حملات brute-force و نفوذهای خودکار آسیب‌پذیر محسوب می‌شود.

اگر با نحوه اتصال پایه به سرور از طریق SSH آشنا نیستید، ابتدا آموزش اتصال به سرور ریموت با SSH را ببینید.

راه‌حل حرفه‌ای و امن‌تر، استفاده از کلیدهای SSH است. این روش مبتنی بر رمزنگاری کلید عمومی بوده و بدون ارسال رمز عبور، دسترسی امن و مطمئن به سرور را فراهم می‌کند. استفاده از SSH Key یکی از پایه‌ای‌ترین اصول امنیتی برای هر مدیر سیستم محسوب می‌شود.

در این آموزش از «دیدگاه» به‌صورت گام‌به‌گام یاد می‌گیرید:

  • چگونه یک جفت کلید SSH امن بسازید

  • چطور کلید عمومی را روی سرور قرار دهید

  • مجوزهای صحیح فایل‌ها را تنظیم کنید

  • ورود با رمز عبور و لاگین مستقیم root را غیرفعال کنید

  • و در نهایت یک اتصال امن و بدون پسورد داشته باشید


نکات کلیدی این آموزش

  • کلیدهای SSH نسبت به رمز عبور امنیت بسیار بالاتری دارند

  • الگوریتم Ed25519 بهترین انتخاب برای ساخت کلید جدید است

  • دستور

ssh-keygen -t ed25519
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
برای تولید کلید استفاده می‌شود

 

  • استفاده از Passphrase لایه امنیتی بسیار مهمی اضافه می‌کند

  • ابزار ssh-copy-id ساده‌ترین روش انتقال کلید به سرور است

  • غیرفعال‌سازی لاگین با پسورد و root امنیت سرور را چند برابر می‌کند

  • ssh-agent امکان استفاده راحت از کلیدهای رمزدار را فراهم می‌کند

  • مجوزهای اشتباه فایل‌ها شایع‌ترین علت خطاهای SSH هستند

  • تونل SSH برای اتصال امن به سرویس‌هایی مثل Jupyter بسیار کاربردی است


  • SSH Key چیست و چگونه کار می‌کند؟

    کلیدهای SSH شامل دو بخش هستند:

    1. کلید خصوصی (Private Key)

    • روی سیستم شما باقی می‌ماند

    • نباید در اختیار هیچ‌کس قرار بگیرد

    • بهتر است با Passphrase محافظت شود

    2. کلید عمومی (Public Key)

    • قابل اشتراک‌گذاری است

    • روی سرور در فایل ~/.ssh/authorized_keys ذخیره می‌شود

    روند احراز هویت

    هنگام اتصال:

    1. سرور با کلید عمومی یک چالش ایجاد می‌کند

    2. کلاینت با کلید خصوصی پاسخ می‌دهد

    3. بدون ارسال کلید یا رمز عبور، هویت شما تأیید می‌شود


    چرا باید از SSH Key استفاده کنیم؟

    امنیت بالا

    شکستن یک کلید Ed25519 یا RSA 4096-bit عملا غیرممکن است، در حالی که رمزهای عبور قابل حدس هستند.

    راحتی

    پس از راه‌اندازی، بدون وارد کردن رمز عبور وارد سرور می‌شوید. با ssh-agent حتی Passphrase هم فقط یک بار وارد می‌شود.

    اتوماسیون

    در CI/CD، بکاپ‌گیری، Ansible و اسکریپت‌ها، استفاده از رمز عبور فاجعه امنیتی است. SSH Key راه‌حل استاندارد است.


    انواع کلید SSH

    الگوریتماندازهسرعتتوضیح
    RSA3072 یا 4096کندقدیمی اما سازگار
    ECDSA256 تا 521متوسطامنیت خوب، ولی بحث‌برانگیز
    Ed25519256بسیار سریعمدرن، امن، پیشنهاد دیدگاه

    نتیجه:
    اگر سیستم قدیمی ندارید، فقط Ed25519.


    پیش‌نیازها

    برای اجرای این آموزش باید:

    • اوبونتو 20.04 / 22.04 / 24.04 داشته باشید

    • یک کاربر غیر root با دسترسی sudo

    • بسته‌های openssh-client و openssh-server نصب باشند

    بررسی وضعیت SSH

    sudo systemctl status ssh
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    نصب در صورت نیاز

    2 خط
    sudo apt update
    sudo apt install openssh-server openssh-client
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    ساخت کلید SSH

    روی سیستم خود اجرا کنید:

    ssh-keygen -t ed25519
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
    • مسیر پیش‌فرض را با Enter تأیید کنید

    • حتما یک Passphrase قوی وارد کنید

    فایل‌ها ساخته می‌شوند:

    • ~/.ssh/id_ed25519 ← کلید خصوصی

    • ~/.ssh/id_ed25519.pub ← کلید عمومی


    انتقال کلید عمومی به سرور

    روش پیشنهادی (ساده)

    ssh-copy-id user@server_ip
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    روش دستی

    روی سیستم خود:

    cat ~/.ssh/id_ed25519.pub
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    روی سرور:

    4 خط
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    nano ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    تست اتصال

    ssh user@server_ip
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    اگر بدون رمز عبور وارد شدید، همه‌چیز درست است.


    افزایش امنیت SSH سرور

    فایل تنظیمات را باز کنید:

    sudo nano /etc/ssh/sshd_config
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    غیرفعال‌سازی پسورد

    PasswordAuthentication no
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    غیرفعال‌سازی ورود root

    PermitRootLogin no
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    سرویس را ریستارت کنید:

    sudo systemctl restart ssh
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    مجوزهای صحیح فایل‌ها (بسیار مهم)

    3 خط
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/id_ed25519
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    تونل SSH (Port Forwarding)

    مثال: اتصال امن به Jupyter

    برای آشنایی کامل‌تر با این قابلیت، آموزش کامل SSH Port Forwarding را مطالعه کنید.

    ssh -L 8888:localhost:8888 user@server_ip
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    سپس در مرورگر:

    http://localhost:8888
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    خطایابی SSH

    حالت دیباگ

    ssh -v user@server_ip
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    خطای Permission denied

    ۹۰٪ مواقع مشکل از مجوز فایل‌ها یا کلید اشتباه است.


    جمع‌بندی

    با راه‌اندازی SSH Key در اوبونتو:

    • امنیت سرور را به‌شدت افزایش می‌دهید

    • حملات brute-force عملا بی‌اثر می‌شوند

    • اتصال سریع‌تر و حرفه‌ای‌تری خواهید داشت

    • آماده اتوماسیون، CI/CD و مدیریت پیشرفته می‌شوید

    این روش یکی از پایه‌های اصلی مدیریت امن سرور در لینوکس است و هر مدیر سیستم باید به آن مسلط باشد.

    دیدگاه همیشه توصیه می‌کند:

    زیرساخت ابری برای اجرای همین آموزش

    سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

    ادامه یادگیری:Docker·Ubuntu·VPS