آموزش تغییر رمز سرور لینوکس و افزایش امنیت ورود با SSH KEy پرینت


آموزش تغییر رمز سرور لینوکس و افزایش امنیت ورود با SSH Key

مقدمه:

در آموزش تغییر رمز سرور لینوکس و افزایش امنیت ورود با SSH Key ابتدا رمز حساب فعلی یا کاربر موردنظر را با دستور passwd تغییر می‌دهیم. سپس یک جفت کلید امن روی رایانه مدیر می‌سازیم و کلید عمومی را به سرور انتقال می‌دهیم. پس از آزمایش موفق ورود با کلید، می‌توان ورود مستقیم root و احراز هویت با رمز را محدود کرد. این ترتیب اهمیت زیادی دارد؛ زیرا غیرفعال‌ کردن زودهنگام رمز یا تنظیم اشتباه SSH ممکن است دسترسی مدیر را کاملاً قطع کند.

هشدار ضروری: پیش از تغییر فایل‌های SSH، از تنظیمات فعلی نسخه پشتیبان تهیه کنید و دسترسی به Console، Rescue یا پنل اضطراری سرویس‌ دهنده را بررسی کنید. نشست فعلی SSH را تا زمانی که ورود از یک پنجره جدید با موفقیت آزمایش نشده است، نبندید.

فهرست مطالب

  • پیش‌نیازهای تغییر رمز و تنظیم SSH Key
  • تغییر رمز حساب فعلی در لینوکس
  • تغییر رمز root و سایر کاربران
  • انتخاب رمز مناسب برای سرور
  • SSH Key چیست و چگونه کار می‌کند؟
  • ساخت کلید SSH در ویندوز، لینوکس و macOS
  • انتقال کلید عمومی به سرور
  • تنظیم صحیح مجوز فایل‌های SSH
  • غیرفعال‌ کردن ورود با رمز
  • محدودکردن ورود مستقیم root
  • تنظیم فایروال و آزمایش اتصال
  • رفع خطاهای رایج SSH Key
  • چک‌ لیست نهایی امنیت ورود
  • سؤالات متداول

پیش‌ نیازهای تغییر رمز و تنظیم SSH

پیش از اجرای فرمان‌ها باید آدرس IP، نام کاربری، پورت SSH و یکی از روش‌های معتبر ورود به سرور را داشته باشید. همچنین برای تغییر رمز کاربران دیگر یا ویرایش تنظیمات SSH به دسترسی root یا sudo نیاز دارید.

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

موارد زیر را قبل از ادامه بررسی کنید:

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

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

مطالعه بیشتر: کارهای ضروری بعد از خرید VPS اوبونتو

آموزش تغییر رمز سرور لینوکس

روش استاندارد تغییر رمز در بیشتر توزیع‌های لینوکس استفاده از دستور passwd است. این دستور برای تغییر رمز حساب فعلی یا، با سطح دسترسی مناسب، رمز سایر کاربران به کار می‌رود.

تغییر رمز کاربر فعلی

پس از ورود به سرور، دستور زیر را اجرا کنید:

passwd
 

سیستم ابتدا رمز فعلی را درخواست می‌کند. سپس باید رمز جدید را وارد کرده و برای تأیید دوباره بنویسید.

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

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

تغییر رمز کاربر دیگر

اگر به sudo دسترسی دارید، برای تغییر رمز یک کاربر دیگر از این ساختار استفاده کنید:

sudo passwd username
 

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

پس از تغییر، دسترسی‌ها و عضویت کاربر در گروه‌ها را نیز بررسی کنید:

id username

تغییر رمز به‌ تنهایی مجوزهای کاربر را تغییر نمی‌دهد. اگر حساب نباید دسترسی مدیریتی داشته باشد، عضویت آن در گروه‌هایی مانند sudo یا wheel را جداگانه ارزیابی کنید.

تغییر رمز root در لینوکس

اگر مستقیماً با حساب root وارد شده‌اید، دستور زیر رمز همان حساب را تغییر می‌دهد:

passwd

اگر با یک کاربر sudo وارد شده‌اید، می‌توانید از دستور زیر استفاده کنید:
sudo passwd root

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

در بسیاری از سناریوها بهتر است یک کاربر عادی با دسترسی sudo داشته باشید و ورود مستقیم root از راه دور را محدود کنید. این تصمیم را فقط پس از آزمایش حساب مدیریتی جایگزین اجرا کنید.

مجبورکردن کاربر به تغییر رمز در ورود بعدی

اگر برای کاربر دیگری رمز موقت تعیین کرده‌اید، می‌توانید او را ملزم کنید در ورود بعدی رمز را تغییر دهد:

sudo passwd --expire username

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

قفل و بازکردن یک حساب کاربری

برای جلوگیری موقت از ورود مبتنی بر رمز یک حساب:

sudo passwd -l username

برای بازکردن آن:

sudo passwd -u username

قفل‌کردن رمز لزوماً تمام روش‌های ورود را مسدود نمی‌کند. اگر کاربر دارای SSH Key، نشست فعال، Token یا روش دسترسی دیگری باشد، باید آن موارد نیز جداگانه بررسی شوند.

آموزش مدیریت کاربران در لینوکس» ← مقاله ساخت، حذف و مدیریت کاربران لینوکس]

چگونه یک رمز مناسب برای سرور انتخاب کنیم؟

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

یک عبارت عبور طولانی و تصادفی معمولاً از یک رمز کوتاه و پیچیده اما قابل‌ پیش‌ بینی مناسب‌ تر است. برای تولید و نگهداری رمز می‌توانید از یک Password Manager معتبر استفاده کنید.

رمز را در موارد زیر نگهداری نکنید:

  • فایل متنی عمومی روی رایانه
  • پیام‌رسان یا گفت‌ وگوی گروهی
  • توضیحات پروژه در مخزن Git
  • اسکریپت‌های قابل‌مشاهده
  • فایل تنظیمات بدون محدودیت دسترسی
  • ایمیل مشترک میان چند نفر

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

SSH Key چیست و چرا برای ورود به سرور مناسب است؟

SSH Key از یک کلید خصوصی و یک کلید عمومی تشکیل می‌شود. کلید عمومی روی سرور قرار می‌گیرد و کلید خصوصی در رایانه مدیر باقی می‌ماند.

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

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

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

مقایسه ورود با رمز و SSH Key

معیار ورود با رمز عبور ورود با SSH Key
اطلاعات موردنیاز نام کاربری و رمز کلید خصوصی متناظر با کلید عمومی
مقاومت در برابر حدس رمز وابسته به قدرت رمز و محدودیت تلاش‌ها در برابر حملات حدس رمز مناسب‌تر است
سهولت استفاده ساده برای کاربران تازه‌کار نیازمند ساخت و نگهداری کلید
خطر فراموشی یا اشتراک امکان فراموشی و ارسال ناامن رمز احتمال گم‌شدن یا کپی‌شدن فایل خصوصی
مدیریت چند مدیر اشتراک رمز خطرناک است برای هر مدیر می‌توان کلید جداگانه ساخت
لغو دسترسی یک مدیر ممکن است نیازمند تغییر رمز مشترک باشد می‌توان فقط کلید همان فرد را حذف کرد
حفاظت تکمیلی مدیر رمز عبور و احراز هویت چندمرحله‌ای در لایه‌های مرتبط Passphrase، Agent و محدودیت فایروال
کاربرد پیشنهادی دسترسی موقت یا مرحله راه‌اندازی با کنترل مناسب دسترسی مدیریتی روزمره به سرور

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

مطالعه بیشتر: مشاهده سرورهای مجازی لینوکس

ساخت SSH Key در رایانه شخصی

کلید SSH را روی رایانه‌ای بسازید که قرار است از طریق آن به سرور متصل شوید. ساخت کلید خصوصی روی VPS و انتقال آن به رایانه، در اغلب سناریوهای معمول روش مناسبی نیست.

ساخت کلید در لینوکس و macOS

ترمینال را باز کنید و دستور زیر را اجرا کنید:

ssh-keygen -t ed25519

ابزار محل ذخیره کلید و سپس Passphrase را درخواست می‌کند. انتخاب Passphrase مناسب از کلید خصوصی در صورت دسترسی شخص دیگری به فایل محافظت می‌کند.

دو فایل ایجاد می‌شوند:

id_ed25519

id_ed25519.pub

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

ساخت کلید SSH در ویندوز

در نسخه‌های جدید ویندوز می‌توانید PowerShell یا Windows Terminal را باز کرده و همان دستور را اجرا کنید:

ssh-keygen -t ed25519

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

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

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

اگر ورود با رمز هنوز فعال است، ساده‌ ترین روش در لینوکس و macOS استفاده از ssh-copy-id است:

ssh-copy-id username@SERVER_IP

اگر SSH روی پورت سفارشی اجرا می‌شود:

ssh-copy-id -p PORT username@SERVER_IP

این ابزار کلید عمومی را در فایل authorized_keys کاربر مقصد قرار می‌دهد و مجوزهای معمول را نیز تنظیم می‌کند.

افزودن دستی کلید عمومی

اگر ssh-copy-id در دسترس نیست، ابتدا روی سرور پوشه SSH را برای کاربر موردنظر ایجاد کنید:

mkdir -p ~/.ssh

chmod 700 ~/.ssh

سپس متن کامل کلید عمومی را در فایل زیر قرار دهید:

~/.ssh/authorized_keys

بعد مجوز فایل را تنظیم کنید:

chmod 600 ~/.ssh/authorized_keys

اگر این مراحل با حساب root برای کاربر دیگری انجام شده‌اند، مالکیت فایل‌ها را بررسی و اصلاح کنید:

sudo chown -R username:username /home/username/.ssh

مسیر خانه کاربران ممکن است در برخی سیستم‌ها متفاوت باشد. پیش از اجرای chown، نام کاربر و مسیر را دقیق بررسی کنید.

آزمایش ورود با کلید

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

ssh username@SERVER_IP

اگر چند کلید دارید، می‌توانید فایل کلید را مشخص کنید:

ssh -i ~/.ssh/id_ed25519 username@SERVER_IP

اگر اتصال موفق بود، اجرای sudo را نیز بررسی کنید:

sudo whoami

تنها پس از موفقیت ورود با کلید و تأیید دسترسی مدیریتی، سراغ غیرفعال‌کردن رمز بروید.

آموزش اتصال SSH به سرور لینوکس» ← مقاله اتصال به VPS از ویندوز و لینوکس]

تنظیم امن سرویس SSH

فایل اصلی تنظیمات OpenSSH Server معمولاً در مسیر زیر قرار دارد:

/etc/ssh/sshd_config

بعضی توزیع‌ها تنظیمات تکمیلی را از پوشه زیر نیز می‌خوانند:

/etc/ssh/sshd_config.d/

پیش از ویرایش فایل اصلی از آن نسخه پشتیبان بگیرید:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

سپس فایل را با ویرایشگر دلخواه باز کنید:

sudo nano /etc/ssh/sshd_config

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

پس از آزمایش موفق SSH Key، این گزینه را بررسی کنید:

PasswordAuthentication no

وجود گزینه‌های تکراری یا فایل‌های تکمیلی ممکن است مقدار نهایی را تغییر دهد. تنظیم مؤثر SSH را می‌توانید با دستور زیر بررسی کنید:

sudo sshd -T

محدود کردن ورود مستقیم root

پس از تأیید عملکرد کاربر sudo، مقدار زیر را تنظیم کنید:

PermitRootLogin no

این گزینه ورود مستقیم root از طریق SSH را محدود می‌کند. کاربران مجاز همچنان می‌توانند در صورت داشتن مجوز از sudo استفاده کنند.

اعتبارسنجی تنظیمات قبل از اعمال

پیش از Reload کردن سرویس، صحت ساختار فایل‌ها را بررسی کنید:

sudo sshd -t

اگر خطایی نمایش داده شد، سرویس را Reload نکنید و ابتدا مشکل را اصلاح کنید. اگر دستور بدون خطا پایان یافت، تنظیمات را بازخوانی کنید:
sudo systemctl reload ssh
 

نام سرویس در بعضی توزیع‌ها ممکن است sshd باشد:

sudo systemctl reload sshd

اکنون از یک ترمینال جدید اتصال را امتحان کنید. نشست قدیمی را فقط پس از ورود موفق کاربر جدید ببندید.

تنظیم فایروال برای SSH

قبل از فعال‌کردن فایروال، پورت واقعی SSH را مجاز کنید. در اوبونتو و برخی توزیع‌های مبتنی بر Debian می‌توان از UFW استفاده کرد.

برای پورت استاندارد:

sudo ufw allow OpenSSH
 

برای یک پورت سفارشی:

sudo ufw allow PORT/tcp
 
سپس وضعیت قوانین را ببینید:
 
sudo ufw status numbered
 

اگر قانون SSH وجود دارد، فایروال را فعال کنید:

sudo ufw enable
 

در صورت وجود فایروال ابری یا Security Group در پنل ارائه‌ دهنده، پورت SSH باید در آن لایه نیز مجاز باشد. ناهماهنگی میان فایروال سیستم‌عامل و فایروال شبکه می‌تواند اتصال را مسدود کند.

اگر IP مدیریتی ثابت دارید، محدودکردن SSH به همان IP می‌تواند سطح دسترسی عمومی را کاهش دهد. این روش برای کاربران دارای IP متغیر باید با احتیاط و برنامه بازیابی اجرا شود.

آیا تغییر پورت SSH ضروری است؟

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

استفاده از SSH Key، محدودکردن root، فایروال، به‌روزرسانی و نظارت بر گزارش‌ها مهم‌تر هستند. اگر پورت را تغییر می‌دهید، ابتدا پورت جدید را در همه لایه‌های فایروال باز کنید و سپس اتصال را آزمایش کنید.

آموزش تغییر پورت SSH در لینوکس» ← مقاله تغییر پورت SSH و تنظیم فایروال]

رفع مشکلات رایج ورود با SSH Key

خطای Permission denied

این خطا می‌تواند به نام کاربری اشتباه، کلید خصوصی نادرست، مجوزهای نامناسب یا غیرفعال‌بودن احراز هویت کلیدی مربوط باشد. برای دریافت جزئیات بیشتر اتصال را در حالت Verbose اجرا کنید:

ssh -v username@SERVER_IP
 

اطلاعات خروجی ممکن است شامل مسیر فایل‌ها و جزئیات محیط باشد؛ بنابراین هنگام اشتراک‌گذاری آن، داده‌های حساس را حذف کنید.

مجوز اشتباه پوشه SSH

مجوزهای رایج برای پوشه و فایل کلید عمومی عبارت‌اند از:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
 

مالک پوشه و فایل نیز باید با کاربر مقصد هماهنگ باشد. مجوز بسیار باز ممکن است باعث شود سرویس SSH فایل را نپذیرد.

انتخاب کلید اشتباه

اگر چند کلید روی رایانه دارید، فایل موردنظر را مشخص کنید:

 
ssh -i ~/.ssh/private_key username@SERVER_IP
 

می‌توانید برای مدیریت چند سرور از فایل تنظیمات کاربر در مسیر ~/.ssh/config استفاده کنید. مجوز این فایل نیز باید محدود باشد.

مسدود شدن پورت توسط فایروال

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

اجرا نشدن سرویس SSH

وضعیت سرویس را از طریق کنسول اضطراری بررسی کنید:

 
sudo systemctl status 

آیا این پاسخ به شما کمک کرد؟

  • تغییر رمز سرور لینوکس و افزایش امنیت ورود با SSH KEy
  • 0
« برگشت