سامانه فعالآپتایم 99.9%دیتاسنتر: ایران / مبین‌وانتحویل آنی و خودکار
← بلاگ

ورود به سرور مجازی با کلید SSH بدون رمز عبور (امن‌تر و سریع‌تر)

2 مرداد 1405

ورود به سرور با رمز عبور ساده است، اما یک ضعف بزرگ دارد: ربات‌ها شبانه‌روز آدرس‌های IP را اسکن می‌کنند و رمزهای رایج را امتحان می‌کنند. اگر به لاگ سرور خود نگاه کنید، احتمالاً روزانه صدها تلاش ناموفق ورود می‌بینید. راه‌حل استاندارد و حرفه‌ای، ورود با «کلید SSH» است.

کلید SSH چطور کار می‌کند؟

به‌جای یک رمز، شما یک جفت کلید می‌سازید:

  • کلید خصوصی (private key): روی کامپیوتر شما می‌ماند و هرگز جایی ارسال نمی‌شود.
  • کلید عمومی (public key): روی سرور قرار می‌گیرد و مشکلی ندارد اگر کسی آن را ببیند.

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

قدم ۱: ساخت کلید روی کامپیوتر خودتان

در ویندوز ۱۰ به بعد، لینوکس و مک، دستور زیر را در ترمینال (یا PowerShell) بزنید:

ssh-keygen -t ed25519 -C "my-laptop"

سه سؤال می‌پرسد:

  • محل ذخیره: با زدن Enter مسیر پیش‌فرض را بپذیرید.
  • passphrase: یک رمز اختیاری روی خود کلید. توصیه می‌شود بگذارید تا اگر لپ‌تاپتان دزدیده شد، کلید بی‌استفاده باشد.

حالا دو فایل ساخته می‌شود: id_ed25519 (خصوصی، محرمانه) و id_ed25519.pub (عمومی).

الگوریتم ed25519 از rsa قدیمی امن‌تر و سریع‌تر است؛ اگر سرور خیلی قدیمی دارید که پشتیبانی نمی‌کند، از ssh-keygen -t rsa -b 4096 استفاده کنید.

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

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

ssh-copy-id root@SERVER_IP

در ویندوز اگر ssh-copy-id ندارید، دستی انجام دهید — ابتدا محتوای کلید عمومی را کپی کنید:

type $env:USERPROFILE\.ssh\id_ed25519.pub    # ویندوز PowerShell
cat ~/.ssh/id_ed25519.pub                      # لینوکس و مک

سپس با رمز به سرور وصل شوید و آن را اضافه کنید:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "محتوای کلید عمومی را اینجا بچسبانید" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

دسترسی‌های 700 و 600 مهم هستند؛ اگر بازتر باشند، SSH به دلایل امنیتی کلید را نادیده می‌گیرد و همچنان رمز می‌خواهد.

قدم ۳: تست کنید

یک ترمینال جدید باز کنید (نشست فعلی را نبندید) و وصل شوید:

ssh root@SERVER_IP

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

قدم ۴: غیرفعال کردن ورود با رمز

این مهم‌ترین قدم است و همان چیزی است که حملات را عملاً صفر می‌کند. فایل تنظیمات را باز کنید:

nano /etc/ssh/sshd_config

این مقادیر را تنظیم کنید:

PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password

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

systemctl restart ssh

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

مدیریت چند سرور با فایل config

اگر چند سرور دارید، به‌جای حفظ کردن IPها یک فایل ~/.ssh/config بسازید:

Host myserver
    HostName 87.107.112.40
    User root
    IdentityFile ~/.ssh/id_ed25519

Host shop
    HostName 87.107.112.41
    User ali

از این به بعد فقط کافی است بنویسید ssh myserver.

مشکلات رایج

  • هنوز رمز می‌خواهد: دسترسی پوشه .ssh و فایل authorized_keys را بررسی کنید (۷۰۰ و ۶۰۰).
  • Permission denied (publickey): کلید اشتباه است یا در سرور ثبت نشده؛ با ssh -v جزئیات را ببینید.
  • کلید را گم کرده‌ام: از کنسول تحت وب پنل کاربری وارد سرور شوید و کلید جدید را اضافه کنید.

جمع‌بندی

ورود با کلید SSH هم امن‌تر است و هم راحت‌تر؛ دیگر رمز نمی‌زنید و حملات brute-force عملاً بی‌اثر می‌شوند. این کار را همان روز اول روی هر سرور جدید انجام دهید. برای تکمیل امنیت، مقاله نکات امنیت سرور لینوکس و راه‌اندازی فایروال UFW را هم مطالعه کنید.

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

SSHامنیتآموزشلینوکس

سرور مجازی ایران با تحویل آنی می‌خواهید؟

تحویل خودکار در کمتر از یک دقیقه، دیتاسنتر داخل ایران، دسترسی کامل root و پشتیبانی 24 ساعته.

مشاهده پلن‌ها و قیمت‌ها