مقدمه
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ذخیره میشود
روند احراز هویت
هنگام اتصال:
-
سرور با کلید عمومی یک چالش ایجاد میکند
-
کلاینت با کلید خصوصی پاسخ میدهد
-
بدون ارسال کلید یا رمز عبور، هویت شما تأیید میشود
چرا باید از SSH Key استفاده کنیم؟
امنیت بالا
شکستن یک کلید Ed25519 یا RSA 4096-bit عملا غیرممکن است، در حالی که رمزهای عبور قابل حدس هستند.
راحتی
پس از راهاندازی، بدون وارد کردن رمز عبور وارد سرور میشوید. با ssh-agent حتی Passphrase هم فقط یک بار وارد میشود.
اتوماسیون
در CI/CD، بکاپگیری، Ansible و اسکریپتها، استفاده از رمز عبور فاجعه امنیتی است. SSH Key راهحل استاندارد است.
انواع کلید SSH
| الگوریتم | اندازه | سرعت | توضیح |
|---|---|---|---|
| RSA | 3072 یا 4096 | کند | قدیمی اما سازگار |
| ECDSA | 256 تا 521 | متوسط | امنیت خوب، ولی بحثبرانگیز |
| Ed25519 | 256 | بسیار سریع | مدرن، امن، پیشنهاد دیدگاه |
نتیجه:
اگر سیستم قدیمی ندارید، فقط Ed25519.
پیشنیازها
برای اجرای این آموزش باید:
-
اوبونتو 20.04 / 22.04 / 24.04 داشته باشید
-
یک کاربر غیر root با دسترسی sudo
-
بستههای
openssh-clientوopenssh-serverنصب باشند
بررسی وضعیت SSH
sudo systemctl status sshنصب در صورت نیاز
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روی سرور:
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مجوزهای صحیح فایلها (بسیار مهم)
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 و مدیریت پیشرفته میشوید
این روش یکی از پایههای اصلی مدیریت امن سرور در لینوکس است و هر مدیر سیستم باید به آن مسلط باشد.
دیدگاه همیشه توصیه میکند:
