بازگشت به مجله
امنیتتیم فنی هایوهاست۹ دقیقه مطالعه

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

موثرترین کاری که برای امنیت سرور میتوانید انجام دهید؛ ساخت کلید، انتقال آن و بستن ورود با رمز عبور بدون قفل شدن بیرون سرور.

احراز هویت کلیدی

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

1

چطور کار میکند

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

نکته مهم این است که کلید خصوصی هیچوقت از سیستم شما خارج نمیشود و روی شبکه ارسال نمیگردد. به همین دلیل شنود ارتباط هم کمکی به مهاجم نمیکند.

نمودار احراز هویت با جفت کلید SSH؛ کلید خصوصی روی سیستم کاربر و کلید عمومی روی سرور
کلید خصوصی هیچوقت ارسال نمیشود؛ به همین دلیل شنود ارتباط به مهاجم کمکی نمیکند.
2

ساخت جفت کلید

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

هنگام ساخت، عبارت عبور خواسته میشود. این عبارت لایه دومی است که اگر فایل کلید به دست کسی بیفتد، بلافاصله قابل استفاده نباشد.

ساخت کلید ed25519
ssh-keygen -t ed25519 -C "laptop-matin"
اگر به سازگاری با سیستم های قدیمی نیاز دارید
ssh-keygen -t rsa -b 4096 -C "laptop-matin"
3

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

ساده ترین راه، استفاده از ابزار آماده است که خودش دسترسی فایل ها را هم درست تنظیم میکند. در این مرحله هنوز با رمز عبور وارد میشوید؛ این آخرین باری است که به آن نیاز دارید.

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

روش ساده
ssh-copy-id -p 2222 user@your-server-ip
روش دستی
cat ~/.ssh/id_ed25519.pub | ssh -p 2222 user@your-server-ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
تنظیم دسترسی درست روی سرور
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
4

تست ورود قبل از هر تغییر دیگری

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

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

تست ورود با کلید
ssh -p 2222 user@your-server-ip
5

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

حالا که ورود با کلید کار میکند، مسیر رمز عبور را ببندید. مثل راهنمای تغییر پورت، بهتر است به جای ویرایش فایل اصلی، یک فایل جداگانه در پوشه drop-in بسازید تا در به روز رسانی ها حفظ شود.

بعد از اعمال، از یک ترمینال جدید ورود را دوباره تست کنید و تا وقتی موفق نشدید نشست قبلی را نبندید.

ساخت فایل پیکربندی
sudo nano /etc/ssh/sshd_config.d/99-hardening.conf
محتوای فایل
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
KbdInteractiveAuthentication no
بررسی صحت و اعمال
sudo sshd -t
sudo systemctl restart ssh
  • گزینه KbdInteractiveAuthentication را فراموش نکنید؛ بدون آن مسیر دیگری برای رمز عبور باز میماند.
  • مقدار prohibit-password اجازه ورود root فقط با کلید را میدهد.
  • اگر روی سرور از قبل پورت را تغییر داده اید، همان پورت را در دستور ورود بدهید.
6

کار با چند سرور و چند کلید

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

برای اینکه لازم نباشد هر بار عبارت عبور کلید را وارد کنید، از ssh-agent استفاده کنید. کلید یک بار باز میشود و تا پایان نشست در حافظه میماند.

فایل ~/.ssh/config روی سیستم خودتان
Host myserver
    HostName 203.0.113.20
    User matin
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
حالا ورود به این سادگی است
ssh myserver
افزودن کلید به agent
ssh-add ~/.ssh/id_ed25519

پرسش های پرتکرار

کدام نوع کلید را انتخاب کنم؟

برای سرورهای امروزی ed25519 بهترین انتخاب است؛ کوتاه تر، سریعتر و امن است. اگر باید با سیستم های خیلی قدیمی کار کنید، RSA با طول حداقل ۴۰۹۶ بیت گزینه سازگارتری است.

اگر کلید خصوصی خود را گم کنم چه اتفاقی می افتد؟

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

آیا گذاشتن عبارت عبور روی کلید لازم است؟

بله توصیه میشود. اگر فایل کلید خصوصی به دست کسی بیفتد، بدون عبارت عبور بلافاصله قابل استفاده است. با استفاده از ssh-agent لازم نیست هر بار آن را وارد کنید.

به راهنمای بیشتری نیاز دارید؟

تیم پشتیبانی هایوهاست برای انتخاب و مدیریت سرویس کنار شماست.

گفتگو با پشتیبانی

ادامه یادگیری

مشاهده همه