ورود به سرور مجازی با کلید SSH بدون رمز عبور (امنتر و سریعتر)
ورود به سرور با رمز عبور ساده است، اما یک ضعف بزرگ دارد: رباتها شبانهروز آدرسهای 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 را هم مطالعه کنید.
اگر هنوز سرور ندارید، میتوانید از صفحه پلنهای سرور مجازی ایران یک سرور با تحویل آنی تهیه کنید؛ سرور بلافاصله پس از پرداخت و در کمتر از یک دقیقه تحویل داده میشود.
سرور مجازی ایران با تحویل آنی میخواهید؟
تحویل خودکار در کمتر از یک دقیقه، دیتاسنتر داخل ایران، دسترسی کامل root و پشتیبانی 24 ساعته.
مشاهده پلنها و قیمتها