پرش به محتویات

غیرفعال کردن ورود با رمز عبور در SSH

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

چرا این کار لازم است

  • نشانه: در پنل مدیریت هیدیفای این هشدار را می‌بینید: «سرور شما به دلیل فعال بودن احراز هویت رمز عبور در SSH، در معرض سوء استفاده قرار دارد»، یا هنگام باز کردن منوی hiddify روی سرور، یک کادر WARNING نمایش داده می‌شود.
  • علت: سرور شما هنوز ورود به SSH با رمز عبور را می‌پذیرد. ربات‌ها در اینترنت هر روز هزاران رمز را امتحان می‌کنند. اگر یکی درست باشد، کنترل سرور را به دست می‌گیرند و از آن برای حمله استفاده می‌کنند. این کار ممکن است باعث شود دیتاسنتر سرور شما را به خاطر ایبوز (abuse) مسدود کند.
  • راه‌حل: به‌جای رمز عبور با کلید SSH وارد شوید و بعد ورود با رمز را خاموش کنید. کلید SSH یک جفت فایل است که روی کامپیوتر خودتان ساخته می‌شود: یک کلید خصوصی که پیش شما می‌ماند و یک کلید عمومی که روی سرور کپی می‌کنید. سرور فقط به کامپیوتری اجازه ورود می‌دهد که کلید خصوصی متناظر را داشته باشد.

پیش از شروع

  • باید بتوانید با SSH به سرور وصل شوید. اگر هنوز این کار را بلد نیستید، آموزش اتصال به سرور با SSH را ببینید.
  • آدرس IP سرور و نام کاربری SSH (معمولاً root) را می‌دانید.
  • روی کامپیوترتان یک ترمینال دارید: PowerShell در ویندوز و Terminal در مک یا لینوکس.

بخش ۱ را جا نیندازید

اگر پیش از آن‌که ورود با کلید کار کند رمز عبور را خاموش کنید، دیگر نمی‌توانید وارد سرور شوید. بعضی شرکت‌های میزبانی در داشبورد خود یک کنسول وب دارند که در این حالت هم راه ورود می‌دهد، ولی همه آن را ندارند.

بخش ۱: راه‌اندازی ورود با کلید

این مراحل را روی کامپیوتر خودتان انجام دهید، نه روی سرور.

  1. یک جفت کلید بسازید (اگر از قبل کلید دارید، این مرحله را رد کنید):

    ssh-keygen -t ed25519
    

    برای پذیرفتن محل پیش‌فرض فایل، Enter بزنید. می‌توانید برای محافظت از کلید یک عبارت عبور (passphrase) وارد کنید، یا دو بار Enter بزنید تا خالی بماند.

  2. کلید عمومی را روی سرور کپی کنید. به‌جای root نام کاربری خود و به‌جای your_server_ip آدرس IP سرور را بنویسید. وقتی خواسته شد، یک بار رمز عبور سرور را وارد کنید.

    type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@your_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    
    ssh-copy-id root@your_server_ip
    
  3. کلید را آزمایش کنید. یک پنجره ترمینال جدید باز کنید و این دستور را اجرا کنید:

    ssh root@your_server_ip
    

    اگر درست انجام شده باشد، بدون پرسیدن رمز عبور سرور وارد می‌شوید (اگر برای کلید عبارت عبور گذاشته باشید، همان را می‌پرسد).

    اگر هنوز رمز عبور سرور را می‌پرسد، کلید درست کپی نشده است. مرحله ۲ را تکرار کنید و به بخش ۲ نروید.

بخش ۲: خاموش کردن ورود با رمز عبور

این مراحل را روی سرور و از طریق SSH انجام دهید. پنجره SSH فعلی را تا آخر کار باز نگه دارید تا اگر مشکلی پیش آمد، هنوز راه ورود داشته باشید.

  1. یک فایل تنظیمات کوچک بسازید که ورود با رمز را خاموش می‌کند:

    echo "PasswordAuthentication no" | sudo tee /etc/ssh/sshd_config.d/00-disable-password.conf
    

    اوبونتو فایل‌های پوشه /etc/ssh/sshd_config.d/ را پیش از فایل اصلی sshd_config می‌خواند و اولین مقداری که پیدا کند اعمال می‌شود. بعضی شرکت‌های میزبانی در این پوشه فایلی (مثلاً 50-cloud-init.conf) می‌گذارند که ورود با رمز را دوباره روشن می‌کند. پیشوند 00- در نام فایل باعث می‌شود تنظیم شما اولویت داشته باشد.

  2. تنظیمات SSH را از نظر خطا بررسی کنید:

    sudo sshd -t
    

    اگر درست انجام شده باشد، این دستور چیزی چاپ نمی‌کند. اگر خطایی نشان داد، پیش از ادامه فایلی را که نام برده اصلاح کنید.

  3. سرویس SSH را ری‌استارت کنید تا تغییر اعمال شود:

    sudo systemctl restart ssh
    
  4. مطمئن شوید که تنظیم فعال شده است:

    sudo sshd -T | grep -i passwordauthentication
    

    اگر درست انجام شده باشد، عبارت passwordauthentication no را می‌بینید.

بخش ۳: آزمایش

  1. روی کامپیوتر خود یک پنجره ترمینال جدید باز کنید و دوباره با ssh root@your_server_ip وصل شوید. باید با کلید و بدون رمز عبور سرور وارد شوید.
  2. اختیاری: از کامپیوتر دیگری که کلید شما را ندارد وصل شوید. سرور باید با پیام Permission denied (publickey) اجازه ورود ندهد.
  3. صفحه پنل مدیریت هیدیفای را تازه‌سازی (refresh) کنید. هشدار رمز عبور باید برطرف شده باشد.

اگر دیگر نمی‌توانید وارد شوید: به پنجره SSH که باز نگه داشته‌اید برگردید، فایلی را که ساختید پاک کنید و SSH را ری‌استارت کنید:

sudo rm /etc/ssh/sshd_config.d/00-disable-password.conf
sudo systemctl restart ssh

اگر همه پنجره‌ها را بسته‌اید، همین دستورها را از کنسول وب شرکت میزبانی اجرا کنید.

راه‌های بیشتر برای امن کردن سرور


اخرین بروزرسانی: 23 اکتبر 2026

نظرات